【问题标题】:Validating WinForms TextBox (in C#)验证 WinForms 文本框(在 C# 中)
【发布时间】:2009-06-26 11:45:59
【问题描述】:

在 TextBox_Leave 事件中,我需要检查文本框中输入的数字是否为序列号。如果不正确,则需要显示一条消息,因为缺少“数字”

例如:

在文本框中我输入了 3 并单击选项卡: 我需要将消息显示为 “数字不按顺序,数字“1”和“2”不见了”

【问题讨论】:

  • 只有一个问题:您为什么要这样做?
  • 看起来很基本的东西,作业?
  • 这是个奇怪的功能,我觉得你可以重新设计这个功能

标签: c# windows winforms textbox c#-2.0


【解决方案1】:

我不知道这在c#2.0中是否也适用,这是我在c#3.0中的经验:

你为什么使用 TextBox_Leave 呢? Validating-event 应该用于验证输入是否正确。

将 Validating-event 与 ErrorProvider 结合使用(您可以将其从工具箱拖到表单上)以设置错误消息:它将显示为红色三角形中的(闪烁的)感叹号。

ErrorProvider 还可以阻止任何提交操作。

【讨论】:

    【解决方案2】:

    一个技巧是在尝试离开时(例如使用 TAB)在某些情况下(缺少数字)保持焦点在文本框中:

     private void textBox1_Leave(object sender, EventArgs e)
        {
            TextBox tb = (TextBox)sender;
    
            if (tb.Text == "3")
                tb.Focus();
        }
    

    假设您使用的是标准文本框。您还可以使用第三方控件,在某些情况下您可以取消事件(例如取消 = true)。

    【讨论】:

    • 小心这种代码,如果你在多个文本框上使用它,你将创建一个你无法打破的焦点循环......在这种情况下,ErrorProvider 要好得多.
    【解决方案3】:

    尝试使用 Masked TextBox 控件并为此类字段验证设置自定义属性。

    【讨论】:

      【解决方案4】:

      您也可以使用文本框的验证事件。

        private void textBox1_Validating( object sender, CancelEventArgs e )
        {
            if ( textBox1.Text == "3" )
                e.Cancel = true;
        }
      

      文本框在收到有效输入之前不会失去焦点。

      【讨论】:

        【解决方案5】:

        我将向您展示如何验证 Validating WinForms TextBox(在 C# 中)。

        1. 创建一个函数:

          public static void ChkBlankTextBoxes(object sender, string type)
          {
          
              if (sender is TextBox)
              {
                  TextBox textbox = sender as TextBox;
                  if (string.IsNullOrEmpty(textbox.Text))
                  {
                      MessageBox.Show("Please enter correct value value..");
                      textbox.Focus();
          
                  }
              }
          }
          
        2. 调用创建的函数:

          ChkBlankTextBoxes(txt_userID, textBoxtype);
          
          ChkBlankTextBoxes(txt_password, textBoxtype);
          

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-22
          相关资源
          最近更新 更多