私は、フォームからすべてのクリックイベントを削除する方法の良い例を発見した:Closingイベントを削除するには?
private void RemoveClickEvent(Form c)
{
var f1 = typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
var obj = f1.GetValue(c);
var pi = c.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance);
var list = (EventHandlerList)pi.GetValue(c, null);
list.RemoveHandler(obj, list[obj]);
}
をし、それがうまく動作します。しかし、私が必要とするのは、閉会のイベントを削除することですが、私はそれを動作させるためにEventClick
の代わりに何を書き込むかの手がかりがありません。私はEventClosing
、Closing
と書こうとしましたが、うまくいきませんでした。したがって、私の質問は:それは動作するように変更する必要がありますか?さらに良い - 私はClosed
、FormClosing
、FormClosed
のような他のイベントを削除する必要がある場合がありますので、にそこにすべての可能な入力のリストを見つけたい、など
P.S.単純な-=
は、多くのイベントが添付されている可能性があります。そのうちの多くが私にはアクセスできないので、とにかく削除することはできません。私はこれでこれらのイベント名のリストが出ているコメントで述べたように
フォースフォームを閉じないようにしますか? –
いいえ、実際は全く反対です - 標準クローズ以外のイベントは一切発生せずにクローズしたいと思います。たとえば、フォームに「保存されていない変更がありますか?」というメッセージボックスが表示されないようにしたいと思います。 –
フォームを閉じるかクリックしようとすると、メッセージボックスに質問が表示されますか?私はあなたの問題を完全に理解することができませんでしたが、メッセージボックスを表示するコードを削除できませんか? –