繁体   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