2

form2 (clbForm2) にチェックリスト ボックスがあり、アイテム チェック イベントに明示的にマッピングしています。ここで、form2 内から、Form1 のコントロールのチェックされたすべての項目のチェックを外す必要があります。アイテムのチェックを外すと、アイテム チェック イベントが発生します。イベントをスキップする方法はありますか。その中にコードを書きましたが、form2 から呼び出されたときに実行したくありません。良い方法を提案してください。

4

2 に答える 2

6

イベントのバインドを解除し、再バインドします。

_checkBox.CheckedChanged -= new System.EventHandler(yourEventHandler);
// Do Check as you want.
_checkBox.CheckedChanged += new System.EventHandler(yourEventHandler);
于 2011-07-25T11:42:40.983 に答える
2

バインド解除/再バインドするよりもフラグを使用したい...

次のようなクラスレベル変数を作成します...

private bool processCheckChange = true;

次に、イベントハンドラーで...

OnCheckedChange()
{
   if(processCheckChange)
   {
      //Handle check change
   }
}

次に、すべての項目のチェックを外したい場合...

UncheckAllItems()
{
   processCheckChange = false;
   //Uncheck all items
   processCheckChange = true;
}

私はこれが仕事をするべきだと思う

于 2011-07-25T11:47:59.037 に答える