c#中的文本框验证

时间:2011-02-21 12:27:07

标签: c# winforms validation

我有一个带有文本框的表单,它只能接受1980 - 2011年间的4位数年份值。 我确信应该有一个简单的c#验证控件来实现这个验证检查,但我似乎无法找到它。

有什么建议吗?

5 个答案:

答案 0 :(得分:4)

Catch Validating事件并在那里添加验证码。

有关完整示例,请查看MSDN page

对于简单验证,您还可以使用MaskedTextBox

答案 1 :(得分:2)

http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/TextBoxvalidation.htm

尝试此链接,只需根据需要更改范围。 快乐的编码......

答案 2 :(得分:2)

首先我要说,使用max length属性设置为4,这样就不能输入多余的字符

除此之外,您必须连接自己的控件以验证它(可能是文本更改验证,丢失焦点等),这将检查只输入数字并且它们在您指定的值之间

答案 3 :(得分:1)

MaskedTextBox可以解决问题。根据需要设置遮罩:msdn。 但我怀疑它会检查值是否在一个范围之间。它可能只检查该值是否为整数。

答案 4 :(得分:0)

好的,我不打算在这里写下所有代码,但这就是我要做的事情:

在文本框的textchanged事件中;

  • 检查输入的值是否为数字
  • 检查它是否符合模式(将字符与您想要的字符进行比较)

对于这个,您需要逐个比较每个数字。我建议你编写一个方法来解析文本并将它们与你期望的值进行比较。像这样:

private bool IsNumberValid(string text)
{
    String min = "1980",max=2011;
    try
    {
        int minNumber = Convert.ToInt32(min.Substring(0,text.length));
        int maxNumber = Convert.ToInt32(max.Substring(0,text.length));
        int myNumber = Convert.ToInt32(text);
        if(myNumber <= max && myNumber >= min)
            return true;
     }
    catch(Exception ex)
    {
        return false; // number is not numeric
    }
    return false;
 }

可能存在小错误,没有在VS中写入。您需要检查文本的长度,如果它为0,则不要调用此方法。