0

我有验证事件。

    private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
    {

        if (EmployeeIDtextBox.Text == "")
        {
            MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
        }

    }

并将我的取消按钮 causevalidation 设置为 false 但是当我点击取消按钮时,消息框仍然显示。

4

2 回答 2

0

您需要将取消按钮层次结构中所有控件的 CausesValidation 属性设置为 false。

例如: Form1 包含 Panel1 并且 Panel1 包含您的取消按钮。您需要将 Form1、Panel1 和 Cancel 按钮的 CausesValidation 属性设置为 false。

CausesValidation 是 Control 类的属性。在此处阅读有关它的更多信息

如果 CausesValidation 为 true(其默认值),则该控件允许触发验证事件。

如果层次结构中的控件具有 CausesValidation true 并且它们在您单击取消按钮之前获得焦点,则将触发 Validating 事件。

为避免在 panel1 中的控件随处禁用它,您应该为 Cancel Button 使用单独的面板或不使用任何面板。

希望能帮助到你。

编辑:我最后检查了。无论哪个控件在移动到取消按钮时获得焦点,都应该将 CausesValidation 设为 false。

对于除 TextBox 本身之外的 TextBox 的层次结构,将 CausesValidation 设置为 false。

于 2013-05-13T05:59:10.517 回答
0
    bool IsCancelBtnClicked = false;
    private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
    {
        if (EmployeeIDtextBox.Text == "")
        {
            MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {
        IsCancelBtnClicked = true;
        EmployeeIDtextBox.Validating -= new CancelEventHandler(textBox4_Validating);
        this.Close();
    }      

感谢这个https://stackoverflow.com/a/16113700/2322994。:)

于 2013-05-13T12:47:39.840 回答