【问题标题】:How to stop textbox validation?如何停止文本框验证?
【发布时间】:2019-01-21 07:31:28
【问题描述】:

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

这是用于 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;
                }
            }

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

【问题讨论】:

  • 什么算作错误数据?
  • 这取决于您对哪个事件进行验证?
  • 您是否尝试过将代码放入要触发验证的按钮的单击事件中?
  • Ebraheem,以上代码用于文本框验证。
  • lzzy,错误的数据意味着数据库中不存在

标签: c#


【解决方案1】:

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

因此,只需为“取消”和其他要跳过文本框验证事件的按钮设置 CausesValidation= false

 btnCancel.CausesValidation = false;

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

this.Form1.AutoValidate = false;

【讨论】:

  • 这不起作用
  • 你有文本框验证事件和取消按钮点击事件吗?
  • 确保不要在任何按钮点击事件中调用任何验证逻辑。而是将验证码放在文本框的验证事件中。
  • 我又添加了一段代码。请检查一下,因为您可能会从“取消”按钮单击中关闭表单,只要我刚刚添加的新属性为真,它就不会关闭。
猜你喜欢
  • 2017-01-13
  • 2023-04-09
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2011-04-17
  • 1970-01-01
相关资源
最近更新 更多