C#-文本框验证

本文关键字:验证 文本 C#- | 更新日期: 2023-09-27 17:59:41

我有一些代码可以检查并确保当用户在字段中输入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");
            }
        }

C#-文本框验证

这里有几个事件可以使用,LeaveLostFocusValidating在MSDN上有更多关于这些不同事件的讨论。

在某些情况下,LeaveLostFocus不会开火,因此在您的情况下最好使用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();
        }
    }

看看这里,我会使用TryParse

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

在标准winforms中,我认为您没有任何验证框架支持,但您可以看看:http://msdn.microsoft.com/en-us/library/ms951078.aspx灵感,这样你就不会把这个逻辑分散到你的应用程序

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