验证从其他控件触发的事件?

时间:2010-12-06 02:29:12

标签: c# events validating

我有一个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。

1 个答案:

答案 0 :(得分:0)

您如何验证CheckBox的输入?它是truefalse。您是否将该检查与其他状态进行比较以确定当前检查状态是否有效?