2010-12-06 30 views
0

我有一個CheckBox作爲窗體上的自定義控件的一部分。我處理其驗證事件以確保最多勾選5個複選框。如果已經勾選了5個,我將取消該事件。這工作出色。從其他控件觸發的驗證事件?

但是,現在,一旦我有5個複選框打勾,事件被取消(除非取消選中第一個選中的複選框)。這意味着按下按鈕,文本框焦點,組合下拉列表和應用程序退出不起作用。發件人對象仍然是一個CheckBox;只是不確定爲什麼它被觸發。

爲什麼我每次觸發複選框的驗證事件什麼東西? (我以爲只有當你點擊複選框控件時纔會觸發它)。正在使用「驗證」事件的正確方法?

其他奇怪的事情:當我選擇或取消選擇第五個複選框時,即使有事件處理程序,也沒有處理任何事件。如果是第4或第6個複選框,同一複選框將觸發驗證事件。

我的代碼:在父窗體:

private List<MyCustomClass> GetSelectedItems() 
    { 
     List<MyCustomClass> result = new List<MyCustomClass>(); 
     foreach (MyCustomClass c in listOfControls) 
     { 
      if (c.Selected()) 
      { 
       result.Add(c); 
      } 
     } 
     return result; 
    } 

    private void validate(object sender, CancelEventArgs e) 
    { 
     if (GetSelectedItems().Count == 5) 
     { 
      e.Cancel = true; 
     } 
    } 

MyCustomClass的Selected方法只返回chkBox.Checked。

回答

0

你如何驗證CheckBox的輸入?它可以是truefalse。您是否將該檢查與其他州進行比較以確定當前檢查狀態是否有效?

+0

你是什麼意思的「輸入一個CheckBox」? – Smashery 2010-12-06 02:39:05

相關問題