如何根据自然数验证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";
}
这没关系,但我确信这不是最好的方法。希望有些东西可以提出更好的建议。
答案 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;
}
}