簡體   English   中英

驗證是否從其他控件觸發了事件?

[英]Validating event fired from other controls?

我有一個CheckBox作為表單上的自定義控件的一部分。 我處理其Validating事件,以確保最多選中5個復選框。 如果5已經被勾選,我取消活動。 這非常出色。

但是,現在,一旦我勾選了5個復選框, 每個事件都將被取消(取消選中第一個選中的CheckBox除外)。 這意味着按鈕按下,文本框焦點,組合下拉菜單和應用程序退出均不起作用。 發件人對象仍然是CheckBox; 只是不確定為什么會被觸發。

為什么每次執行任何操作都會觸發復選框的Validating事件? (我以為只有在單擊復選框控件時才會觸發它)。 使用“驗證”事件是否正確?

其他奇怪的事情:盡管有事件處理程序,但我選擇或取消選擇第5個復選框時,沒有處理任何事件。 如果同一復選框是第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。

您如何驗證CheckBox的輸入? 這是true還是false 您是否正在將該檢查與其他狀態進行比較以確定當前檢查狀態是否有效?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM