0

C# WinForms: TabPages の Clear() メソッドを呼び出すと:

tabControl.TabPages.Clear();

また、SelectedIndexChanged イベントを発生させています

tabControl_SelectedIndexChanged

. しかし、私はそれを望んでいません。Clear() を呼び出したときにこれが呼び出されるのを防ぐための正式な、またはハック的な方法はありますか? ユーザーがタブをクリックするたびに呼び出されるようにしたいのですが、別の場所で Clear() メソッドを呼び出しているときに自動的に呼び出されないようにしたいだけです。

ありがとうございました。

4

2 に答える 2

2

サニがコメントしたように、これは簡単な回避策です。

tabControl.SelectedIndexChanged -= tabControl_SelectedIndexChanged;
tabControl.TabPages.Clear();
tabControl.SelectedIndexChanged += tabControl_SelectedIndexChanged;
于 2012-04-11T16:11:35.480 に答える
2

私が行ったコメントに加えて、それを拡張メソッドにすることができます:

public static void ClearAllTabPages(this TabControl tc, EventHandler eh)
{
  tc.SelectedIndexChanged -= eh;
  tc.TabPages.Clear();
  tc.SelectedIndexChanged += eh;
}

これで、TabPages をクリアしたいすべての場所でイベント ハンドラーをアンフックして再フックすることを覚えておく必要はなくなりました。あなたはただ呼び出す:

tabControl.ClearAllTabPages(tabControl_SelectedIndexChanged);

注:
このコードは試していませんが、動作するはずです。

于 2012-04-11T16:25:45.183 に答える