c# - 验证 - (表单)取消按钮不起作用

标签 c# validation

由于我的 Validating 事件,我无法将表单保留在 CancelButton_Clicked 事件上。

我有一个文本框,它有自己的验证方法,如果输入字符串为 null 或空,则返回 e.Cancel = true,否则返回 e.Cancel = false

现在,我有这个 CancelButton 它只是一个常规按钮,我想关闭当前表单,有点像这样:

CancelButton_Clicked(Object sender, EventArgs e)
{
this.Close();
}

但是如果我这样做,并且如果文本框留空,则它不会通过验证,并且我无法关闭表单。验证图标一直闪烁。 我尝试将 CausesValidation 设置为 false,我也尝试了以下操作:

private void btnCancel_Click(object sender, EventArgs e)
{
    // Stop the validation of any controls so the form can close.
    AutoValidate = AutoValidate.Disable;
    Close();
}

但是这些都没有帮助。希望你能。干杯

最佳答案

假设您已设置 btnCancel.CausesValidation=false;通过代码或设计器。

设置CausesValidation=falsebutton ,将允许您调用 Click event button

现在您可以做很多事情。

  1. 只需取消注册您的 textbox validating里面的事件btn_Cancel

    private void btnCancel_Click(object sender, EventArgs e)
    {
        textBox1.Validating -= new CancelEventHandler(textBox1_Validating);
        this.Close();
    }
    
  2. 只需使用 bool 标志即可。在 btnCancel 事件中将其设置为 true 并在验证事件中使用它

    bool IsCancelBtnClicked=false;
    private void btnCancel_Click(object sender, EventArgs e)
    {
        IsCancelBtnClicked=true;
        this.Close();
    }
    private void textBox1_Validating(object sender, CancelEventArgs e)
    {
        e.Cancel=!IsCancelBtnClicked;
    }
    

关于c# - 验证 - (表单)取消按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113449/

相关文章:

c# - 当 ASP.net MVC Razor 中的其他属性相同时重构循环以合并一个属性

c# - 为什么 C# 中的基类允许在不继承接口(interface)契约的情况下实现接口(interface)契约?

java - 验证 JTextField 中数据的最佳方法是什么?

node.js - 提示输入验证

c# - 我能以某种方式整理这个(过度使用吗?)泛型?

c# - wpf - 当未选择关联的单选按钮时,我应该如何自动将文本框变灰?

php - 验证php中的url参数

c# - 通过验证可编辑的下拉列表

python - 如何覆盖 Django Rest Framework Serializer 中的验证?

c# - UWP 漫游应用程序数据的大小是文件实际大小还是磁盘上的大小?