我有一个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。
答案 0 :(得分:0)
您如何验证CheckBox的输入?它是true
或false
。您是否将该检查与其他状态进行比较以确定当前检查状态是否有效?