use*_*985 42 c# validating winforms
我用C#.我有一个带有编辑框和取消按钮的Windows窗体.编辑框包含验证事件的代码.每次编辑框失去焦点时都会执行代码.当我点击取消按钮时,我只想关闭表单.我不想要对编辑框进行任何验证.如何实现这一目标?
这是一个重要的细节:如果验证失败,那么
e.Cancel = true;
Run Code Online (Sandbox Code Playgroud)
防止离开控制.
但是当用户单击"取消"按钮时,无论如何都应该关闭表单.怎么能实现呢?
Dan*_*fer 45
如果在编辑框失去焦点时进行验证,则取消按钮的任何内容都不会阻止该操作发生.
但是,如果失败的验证阻止取消按钮执行其操作,请将CausesValidation
按钮的属性设置为false
.
Vim*_*Raj 32
显然CausesValidation
,按钮的属性必须设置为false,然后验证事件将永远不会发生在其单击上.但是如果按钮的父控件的CausesValidation
Property设置为true ,则可能会失败.大多数时候开发人员错过/忘记更改CausesValidation
容器控件的属性(如面板控件).将其设置为False.这应该可以解决问题.
Ben*_*Ben 22
由于某些控件的验证正在停止,因此我无法将表单关闭.我已经设置了control.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();
}
Run Code Online (Sandbox Code Playgroud)