[解決済み] あるイベントからすべてのイベントハンドラを削除する方法
2022-03-24 09:41:16
質問
コントロールに新しいイベントハンドラを作成するには、次のようにします。
c.Click += new EventHandler(mainFormButton_Click);
またはこれ
c.Click += mainFormButton_Click;
そして、イベントハンドラを削除するには、次のようにします。
c.Click -= mainFormButton_Click;
しかし、あるイベントからすべてのイベントハンドラを削除するにはどうしたらよいのでしょうか。
どのように解決するのですか?
で解決しました。
MSDNフォーラム
. 以下のサンプルコードでは、すべての
Click
イベントから
button1
.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += button1_Click;
button1.Click += button1_Click2;
button2.Click += button2_Click;
}
private void button1_Click(object sender, EventArgs e) => MessageBox.Show("Hello");
private void button1_Click2(object sender, EventArgs e) => MessageBox.Show("World");
private void button2_Click(object sender, EventArgs e) => RemoveClickEvent(button1);
private void RemoveClickEvent(Button b)
{
FieldInfo f1 = typeof(Control).GetField("EventClick",
BindingFlags.Static | BindingFlags.NonPublic);
object obj = f1.GetValue(b);
PropertyInfo pi = b.GetType().GetProperty("Events",
BindingFlags.NonPublic | BindingFlags.Instance);
EventHandlerList list = (EventHandlerList)pi.GetValue(b, null);
list.RemoveHandler(obj, list[obj]);
}
}
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] enumを列挙するには
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] 複数の例外を一度にキャッチする?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] ディレクトリ内のすべてのファイルやフォルダを削除する方法は?
-
[解決済み] 文字列からダッシュ以外のすべての英数字を削除するには?
-
[解決済み】C#でイベントとイベントハンドラを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] C#でイベントサブスクリプションをクリアするにはどうしたらいいですか?