【问题标题】:How to validate textbox in C# WF?如何验证 C# WF 中的文本框?
【发布时间】:2015-08-18 05:19:03
【问题描述】:

我有两个窗口形式的文本框。 还有一个禁用的按钮。

如何验证文本框:

  • 如果字段为空,则禁用按钮
  • 如果字段内的值小于 5,则禁用按钮
  • 其他情况 - 启用按钮

我在事件 TextChange 上尝试了这个,但是当我尝试输入值 43 时我收到通知,因为事件 TextChange 在每次输入符号后起作用。

代码:

private void textBox2_TextChanged(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(textBox2.Text))
            {
                button6.Enabled = true;
            }
        }

【问题讨论】:

  • 我们可以看看你试过的代码吗?
  • 在webforms中需要手动操作,可以使用WPF吗?使用 MVVM 模式会更容易

标签: c# winforms c#-4.0


【解决方案1】:

如果您不想在每次按下某个键时都进行验证,而是希望在用户离开该字段时进行验证,而不是挂钩到 TextChanged 事件,而是挂钩到 Leave 事件。

private void textBox2_Leave(object sender, EventArgs e)
{
    button6.Enabled = !(string.IsNullOrEmpty(textBox2.Text)) && textBox2.Text.Length >= 5;

    if (!button6.Enabled)
    {
        textBox2.Focus();
    }
}

【讨论】:

  • 谢谢,如果验证错误,如何将焦点保存在当前字段上?
【解决方案2】:

像这样更新你的事件句柄:

private void textBox2_TextChanged(object sender, EventArgs e)
{
    button6.Enabled = 
        !String.IsNullOrEmpty(textBox2.Text) && textBox2.Text.Length > 5
}

至于启动时禁用按钮,您只需将button6设置为默认禁用即可。

或者,在构造函数中调用验证:

textBox2_TextChanged(null, null);

【讨论】:

    【解决方案3】:

    TextChangedLeave 事件都不适用于此。正确的事件称为(惊喜:-)Validating。如果验证错误,您需要设置e.Cancel = true。更多信息:https://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating(v=vs.110).aspx

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 2020-08-20
      • 2011-05-08
      • 1970-01-01
      相关资源
      最近更新 更多