处理textBox中的格式问题



我的任务是让用户在文本框中写一个介于1和5之间的数字。我必须处理坏的情况,比如用户写错了数字或用字符代替数字,只要程序得到正确的数字,这就必须运行。这就是我现在拥有的。

int right_number = int.Parse(number.Text); 
try
{
if (right_number > 5 || right_number < 1)
{
MessageBox.Show("Warning");
}
}
catch (NotFiniteNumberException)
{
MessageBox.Show("Warning");
}

解决此问题的最干净方法是使用具有以下属性的NumericUpDown控件:

  • MinValue=1
  • MaxValue=5
  • Value=(良好启动默认值(
  • DecimalPlaces=0
  • Increment=1

NumericUpDown不接受非数字输入或任何超出其范围的输入,所以您担心的所有情况都是。。消失用户还可以使用向上/向下键来调整值

这将是验证输入的最干净的方法:

bool IsInputValid(string input, out string warningMessage)
{
if (!int.TryParse(input, out var integerValue))
{
warningMessage = "input could not be parsed to an integer";
return false;
}
if (integerValue < 1 || integerValue > 5)
{
warningMessage = "input is not between one and five";
return false;
}
warningMessage = string.Empty;
return true;
}

调用代码看起来像这样:

void TextChanged(string newText)
{
if (!IsInputValid(newText, out var warningMessage))
{
MessageBox.Show(warningMessage);
}
//handle valid input here
}
if (int.TryParse(number, out right_number))
{
if (right_number > 5 || right_number < 1)
{
MessageBox.Show("Warning");
}
}
else
{
MessageBox.Show("Warning");
}

最新更新