0

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

4

1 回答 1

0

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

于 2010-12-06T02:33:11.670 回答