2011-07-25 19 views
2

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

答えて

6

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

私はフラグを使用するのではなく再バインド/バインド解除することを好む
_checkBox.CheckedChanged -= new System.EventHandler(yourEventHandler); 
// Do Check as you want. 
_checkBox.CheckedChanged += new System.EventHandler(yourEventHandler); 
+0

を行うべきだと思いますか? – NewBie

+0

@デザイナークラスを開くと、イベントバインディングを見つけることができます。その行をコピーして、サンプルコードで行ったようにしてください。 – CharithJ

2

...

あなたのイベントハンドラに続いて、このような...

private bool processCheckChange = true; 

としてクラスレベルの変数を作成します...そして、

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

あなたはすべての項目のチェックを外したい...

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

私は、これはそれを行うにはどのように仕事

+0

チェックするアイテムが多数ある場合、イベントを不必要に起動するのではなく、バインドを解除するのが最善の方法です。 – CharithJ

+0

@CharithJ、はい、それは私が考えなかった良い点です – musefan

関連する問題