由于我的 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=false
的button
,将允许您调用 Click
event
button
的
现在您可以做很多事情。
只需取消注册您的
textbox
validating
里面的事件btn_Cancel
即private void btnCancel_Click(object sender, EventArgs e) { textBox1.Validating -= new CancelEventHandler(textBox1_Validating); this.Close(); }
只需使用 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/