我使用Visual Studio创建一个包含3个字段的应用程序,其中可以将3个数字相加。现在,我需要验证所有3个字段,以便无法添加负数。如果输入负数,则每个字段还必须返回一条唯一的消息,如:"请输入正数第一个数字。"
我想出了如何为一个字段执行此操作,但如何将所有3个字段设置为不接受负数(并显示唯一消息)?
这就是我所拥有的:
{
int num = int.Parse(txtNum1.Text);
if (num <0)
{
MessageBox.Show("Please enter a positive first number");
}
else
{
int num1 = int.Parse(txtNum1.Text);
int num2 = int.Parse(txtNum2.Text);
int num3 = int.Parse(txtNum3.Text);
int sum = num1 + num2 + num3;
txtResult.Text = sum.ToString();
}
希望这是有道理的。
答案 0 :(得分:1)
这可能对您有所帮助
int num = 0;
bool atLeastOneisNegative = false;
foreach (Control x in this.Controls)
{
if (x is TextBox)
{
num = 0;
num = int.Parse(((TextBox)x).Text);
if(num < 0)
{
atLeastOneisNegative = true;
MessageBox.Show("Please enter a positive first number");
}
}
}
if(!atLeastOneisNegative)
{
int num1 = int.Parse(txtNum1.Text);
int num2 = int.Parse(txtNum2.Text);
int num3 = int.Parse(txtNum3.Text);
int sum = num1 + num2 + num3;
txtResult.Text = sum.ToString();
}
而问题并不在于说明您使用的是WPF还是WinForms。但逻辑可能会帮助您实现迭代所有TextBox并看到值为Positive。
答案 1 :(得分:0)
通过NumericUpDown
控制或处理TextBox.Validating
事件可以更轻松,但无论如何:
int i1, i2, i3;
if (!int.TryParse(txtNum1.Text, out i1) || i1 < 0) { MessageBox.Show("Please enter a positive first number" ); return; }
if (!int.TryParse(txtNum2.Text, out i2) || i2 < 0) { MessageBox.Show("Please enter a positive second number"); return; }
if (!int.TryParse(txtNum3.Text, out i3) || i3 < 0) { MessageBox.Show("Please enter a positive third number" ); return; }
int sum = i1 + i2 + i3;
txtResult.Text = sum.ToString();