首页 > 解决方案 > 如何停止文本框验证?

问题描述

我对编辑模式的非空值和错误值进行了文本框验证,当我在文本框中输入错误数据时,我无法单击取消按钮,发生验证。

这是针对 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;
                }
            }

我希望当我单击取消按钮和退出按钮时不会验证,即使输入的数据是错误的。

标签: c#

解决方案


您没有触发取消单击事件的原因是您的文本框在您按下取消按钮时具有焦点,并且取消按钮的CausesValidation属性设置为 true。这会导致您的 textBox Validating 事件触发,因为 Cancel 按钮设置为导致验证。

因此,只需CausesValidation= false为要跳过 textBox Validating 事件的 Cancel 和其他按钮设置 。

 btnCancel.CausesValidation = false;

此外,请确保在关闭表单时不会发生验证(即单击表单的关闭按钮或调用 this.Close() 方法时)。将下面的代码放在表单的加载事件中。

this.Form1.AutoValidate = false;

推荐阅读