2011-07-25 34 views
2

我在form2(clbForm2)中獲得了一個checkedlist框,其中我將它映射到項目檢查事件。現在我需要從Form2中取消選中Form1中控件的所有選中項。取消選中這些項目後,它會啓動項目檢查事件。有什麼辦法可以跳過這個活動嗎?我編寫的代碼中,我不想運行時從form2調用。請建議一個好方法。在沒有觸發itemcheck事件的情況下從列表框中清除選中的項目

回答

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

相關問題