跳过winform的控制框[X]的验证
本文关键字:验证 winform 控制 跳过 | 更新日期: 2023-09-27 18:13:34
我有一个验证事件
private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
{
if (EmployeeIDtextBox.Text == "")
{
MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
}
}
并且可以使用cancelbutton跳过验证
private void cancelbutton_Click(object sender, EventArgs e)
{
AutoValidate = AutoValidate.Disable;
Close();
}
是否有可能跳过验证与windowsform的controlbox[X] ?我试图将表单的CausesValidation设置为false,但它不起作用。我也试过它与formclosing,但它不工作。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (EmployeeIDtextBox.CausesValidation)
{
EmployeeIDtextBox.CausesValidation = false;
Close();
}
}
你上一个问题我已经给了你答案。停止使用MessageBox和您的问题消失。请使用ErrorProvider组件。
拦截表单的关闭处理以便在第一个事件触发之前取消验证需要一个hack。将以下代码粘贴到您的表单中:
protected override void WndProc(ref Message m) {
// Intercept WM_SYSCOMMAND, SC_CLOSE
if (m.Msg == 0x112 && (m.WParam.ToInt32() & 0xfff0) == 0xf060) this.AutoValidate = AutoValidate.Disable;
base.WndProc(ref m);
}