验证多个字段

时间:2016-10-20 01:19:46

标签: c#

我使用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();
    }

希望这是有道理的。

2 个答案:

答案 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();