C# 验证多个字段

C# 验证多个字段,c#,C#,我使用VisualStudio创建了一个应用程序,它有3个字段,其中3个数字可以相加。现在,我需要验证所有3个字段,以便不能添加负数。如果输入负数,每个字段还必须返回一条唯一的消息,如:“请输入正数。” 我知道了如何为一个字段设置,但如何为所有3个字段设置为不接受负数(并显示唯一消息) 以下是我所拥有的: { int num = int.Parse(txtNum1.Text); if (num <0) { MessageBox.Show("Plea

我使用VisualStudio创建了一个应用程序,它有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();
    }
{
int num=int.Parse(txtNum1.Text);
如果(num这可能会对您有所帮助

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();
}
int num=0;
bool-atLeastOneisNegative=false;
foreach(此.Controls中的控件x)
{
如果(x是文本框)
{
num=0;
num=int.Parse(((文本框)x).Text);
if(num<0)
{
atLeastOneisNegative=true;
MessageBox.Show(“请输入一个正数”);
}
}
}   
如果(!Atleastone为负)
{
int num1=int.Parse(txtNum1.Text);
int num2=int.Parse(txtNum2.Text);
int num3=int.Parse(txtNum3.Text);
整数和=num1+num2+num3;
txtResult.Text=sum.ToString();
}

然而,问题并不是说明您是在使用WPF还是WinForms。但是逻辑可能会帮助您实现迭代所有文本框并查看其值是否为正值。

使用
NumericUpDown
控件或处理
文本框会更容易。验证
事件,但无论如何:

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();
inti1、i2、i3;
如果(!int.TryParse(txtNum1.Text,out i1)| | i1<0){MessageBox.Show(“请输入正数”);return;}
如果(!int.TryParse(txtNum2.Text,out i2)| | i2<0){MessageBox.Show(“请输入第二个正数”);return;}
如果(!int.TryParse(txtNum3.Text,out i3)| | i3<0){MessageBox.Show(“请输入第三个正数”);return;}
整数和=i1+i2+i3;
txtResult.Text=sum.ToString();

“希望这是有意义的。”——对不起,不。我不这么认为。我们甚至不清楚您在这里使用的是什么GUI API。但是所有API(例如Winforms、WPF、Winrt)具有内置的字段验证功能,您应该使用这些功能。除此之外,您的代码已经解析了所有三个字段。为什么您不能按照该示例检查每个解析的值,以确保其非负(请注意,严格来说,这就是您使用第一个字段所做的……它可以是零,而不是正)?你需要什么帮助还不清楚,这里没有足够的上下文。谢谢大家的输入。这只是我在C#类的第二周。我想出了加法。现在我正在尝试做同样的乘法。输入的数字都不能为零。出于某种原因,我遇到了麻烦。我无法将类型“int”隐式转换为“bool”HI @ ULCIS,如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了解决方案并给回答者和你自己带来了一些声誉。没有义务这样做。第二,如果你有不同的问题,那么用一个新的细节来创建一个新的问题。比如表单的外观。验证是什么?您尝试过的代码是什么。输出是什么(错误/逻辑错误)以及预期的输出是什么。