如何根据自然数验证字段?

时间:2011-06-16 09:40:58

标签: c# validation

如何根据自然数验证TextBox字段?用户被限制为输入自然数(例如1,2,3..99999),如果不是,则显示MessageBox

目前我正在使用以下代码(假设自然数不超过两位数):

Regex isPositiveNum2 = new Regex("[1-9]");
Regex isPositiveNum = new Regex("[1-9][1-9]");
if (isPositiveNum.IsMatch(textbox1.Text) == true || 
    isPositiveNum2.IsMatch(textbox1.Text) == true)
{
    /* Do something */
}
else
{
    MessageBox.Show("Hey! This is not a Natural Number");
    textbox1.Text = "1";
}

这没关系,但我确信这不是最好的方法。希望有些东西可以提出更好的建议。

5 个答案:

答案 0 :(得分:3)

试试这个:

int myValue;
if (int.TryParse(mNumTb1.Text, out myValue) && myValue > 0)
{
    //natural
}
else
{
    //not natural
}

答案 1 :(得分:2)

使用内置的parsing

int.Parse(textbox1.Text) > 0

如果无法解析textbox1.Text,则会抛出异常,因此您可能希望改为使用TryParse

int test;
if(int.TryParse(textbox1.Text, out test))
{
  // parse succeeded can check if natural
  if(test > 0)
  {
    // do something
  }
}

答案 2 :(得分:1)

int i = -1;
int32.TryParse(textbox1.Text, out i);

if (i > 0)
{
    return true;
}
else
{
    return false;
}

答案 3 :(得分:1)

int number;
if (int.TryParse (textbox1.Text, out number) && number >0)
{
    /* Do something */
}
else
{
    MessageBox.Show("Hey! This is not a Natural Number");
    textbox1.Text = "1";
}

答案 4 :(得分:1)

您可以在用户输入时检查字符:

Private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if(!char.IsDigit(e.KeyChar)&&!char.IsControl(e.KeyChar)) //only digit but still allow the user to use control key to Copy&Paste etc. But you need to apply validating with paste text as well
    {
       e.Handled=true;
    }
}