我有一个 CheckBox 作为表单上自定义控件的一部分。我处理它的 Validating 事件以确保最多勾选 5 个复选框。如果已勾选 5,我将取消该事件。这非常有效。
但是,现在,一旦我勾选了 5 个复选框,每个事件都会被取消(除了取消选中第一个选中的 CheckBox)。这意味着按钮按下、文本框焦点、组合下拉列表和应用程序退出都不起作用。sender 对象仍然是 CheckBox;只是不确定为什么会触发它。
为什么每次我做任何事情都会触发复选框的验证事件?(我原以为它只会在您单击复选框控件时触发)。使用“验证”事件是正确的方法吗?
其他奇怪的事情:当我选择或取消选择第 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。