【问题标题】:C# - TextBox ValidationC# - 文本框验证
【发布时间】:2011-09-18 07:07:18
【问题描述】:

我有一些代码可以检查并确保当用户在字段中输入时,必须输入 1 到 10 之间的整数。

虽然如果用户关注该字段,“坏”数据(例如“fdgfdg”)仍然留在该字段中。因此,如果数据无效,一些人可以演示如何在字段上失去焦点时,将输入默认值,例如5

private void textBox4_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int numberEntered = int.Parse(textBox4.Text);
                if (numberEntered < 1 || numberEntered > 10)
                {
                    MessageBox.Show("You must enter a number between 1 and 10");
                }
            }
            catch (FormatException)
            {

                MessageBox.Show("You need to enter an integer");
            }
        }

【问题讨论】:

  • @Gats:这是 winforms 桌面应用程序...
  • 这是winforms 不是网页。
  • @Gats:即使它是一个 Web 应用程序,服务器端验证也是强制性的。客户端验证应该是对服务器端验证的方便补充。
  • 您还应该查看ErrorProvider,这是向用户显示输入错误的便捷方式。
  • 我是一个工具。这就是你在凌晨 4 点回答问题时会发生的情况 :)

标签: c# .net winforms validation


【解决方案1】:

您可以在此处使用几个事件,Leave、LostFocus 和 Validating,MSDN here 上对这些不同事件进行了更多讨论。

在某些情况下,Leave 和 LostFocus 不会触发,因此在您的情况下最好使用 Validating 事件:

    textBox1.Validating += new CancelEventHandler(textBox1_Validating);


    void textBox1_Validating(object sender, CancelEventArgs e)
    {
        int numberEntered;

        if (int.TryParse(textBox1.Text, out numberEntered))
        {
            if  (numberEntered < 1 || numberEntered > 10) 
            { 
                MessageBox.Show("You have to enter a number between 1 and 10");
                textBox1.Text = 5.ToString();
            }
        }
        else
        {
            MessageBox.Show("You need to enter an integer");
            textBox1.Text = 5.ToString();
        }
    }

【讨论】:

    【解决方案2】:

    使用文本框控件上的Leave 事件来验证和设置默认值

    【讨论】:

      【解决方案3】:

      如果您像这里一样手动滚动验证,您需要做的就是在 MessageBox.Show() 之后设置默认值

      在标准 winforms 中,我认为您没有任何框架支持进行验证,但您可以查看以下内容:http://msdn.microsoft.com/en-us/library/ms951078.aspx 以获得灵感,这样您就不会在整个应用程序中分散此逻辑

      【讨论】:

        【解决方案4】:

        看看here,我会使用TryParse

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多