c# - 如何停止文本框验证?
问题描述
我对编辑模式的非空值和错误值进行了文本框验证,当我在文本框中输入错误数据时,我无法单击取消按钮,发生验证。
这是针对 Windows 窗体应用程序的,我进行了验证。
if (dataLogic.IsEmpty(txtSubCourseName.Text))
{
dataLogic.DisplayEmptyMsg();
e.Cancel = true;
return;
}
if (tag != "New")
{
DataTable dt = new DataTable();
sda = new SqlDataAdapter("SELECT * FROM tblSubCourse WHERE SubCourseName='" + txtSubCourseName.Text + "'", con);
con.Open();
sda.Fill(dt);
con.Close();
if (dt.Rows.Count > 0)
{
txtSubCourseName.Text = dt.Rows[0]["SubCourseName"] + "";
}
else
{
dataLogic.EmptyMsg();
e.Cancel = true;
return;
}
}
我希望当我单击取消按钮和退出按钮时不会验证,即使输入的数据是错误的。
解决方案
您没有触发取消单击事件的原因是您的文本框在您按下取消按钮时具有焦点,并且取消按钮的CausesValidation
属性设置为 true。这会导致您的 textBox Validating 事件触发,因为 Cancel 按钮设置为导致验证。
因此,只需CausesValidation= false
为要跳过 textBox Validating 事件的 Cancel 和其他按钮设置 。
btnCancel.CausesValidation = false;
此外,请确保在关闭表单时不会发生验证(即单击表单的关闭按钮或调用 this.Close() 方法时)。将下面的代码放在表单的加载事件中。
this.Form1.AutoValidate = false;
推荐阅读
- google-apps-script - 如何从连字符分隔的列表中提取文本,单元格内可能有新行(因此有多个条目)?
- r - 循环遍历 R 中的变量名
- c# - 通过 SqlCommand 创建登录 - 未替换的参数
- c - 为什么使用整数来存储 4 个字符?有什么实际好处吗?
- ruby-on-rails - 身份验证响应中的 HTTP 错误 422
- c# - Visual Studio 2017 不支持面向 .NET Core 3.0
- ansible - 在 AWX 中的变量中搜索值
- java - Spring-RMI 事件导致 java.io.InvalidClassException: filter status: REJECTED
- google-sheets - 如何在谷歌表格中对列表进行排序,因为当新值键入时,它显示在查询公式的底部列表中?
- python - 过滤 pandas DataFrame 的重复行