在单个If语句中检查多个条件 - C#

时间:2012-01-25 08:13:00

标签: c# winforms

我有一个表格,其中有许多文本框,需要填写三个文本框才能提交表单。我不想为每个文本框使用每个If块。有没有办法为所有三个文本框使用单个if语句?我使用以下代码:

if (textBox1.Text != "" || textBox2.Text != "" || textBox4.Text != "")
{
   // Code
}
else
{
   MessageBox.Show("Fill required fields");
}

但是这个代码甚至可以填充单个文本狐狸,其余所需的文本框也是空的。

7 个答案:

答案 0 :(得分:15)

 if (textBox1.Text != "" &&  textBox2.Text != "" && textBox4.Text != "")
 {
     // Code
 }
 else
 {
     MessageBox.Show("Fill required fields");
 }

您希望所有条件通过。这符合逻辑AND运算符&&的语义。

如果您有大量的文本框,我倾向于将它们保存在列表中:

var boxes = new List<TextBox>{
     textBox1,
     textBox2,
     textBox3,
     //...
};
if (boxes.Any(tb => string.IsNullOrEmpty(tb.Text)))
{
     MessageBox.Show("Fill required fields");
}
else
{
    // Code
}

我也倾向于将异常保留在if部分,返回或抛出错误并省略else部分,因为这只是正常的代码流。这样可以使您期望的代码尽可能地向左运行。

答案 1 :(得分:5)

您应该将||更改为&&

答案 2 :(得分:3)

您创建了一个or语句的集合,因此只有一个语句需要为true才能继续。相反,你需要and他们:

if (textBox1.Text != "" && textBox2.Text != "" && textBox4.Text != "")

答案 3 :(得分:3)

您可以定义一个测试空字符串的方法。

public class Test
{   
  public static bool IsEmpty(params string []args)
    {
        if (args.Length == 0) return true ;
        return args.Any(p => string.IsNullOrEmpty(p));
    }
}

测试字符串,

if(!Test.IsEmpty(TextBox1.Text,TextBox2.Text,TextBox3.Text))
 {
   //valid
 }

答案 4 :(得分:2)

您使用OR(||)并应使用AND(&amp;&amp;)代替。您希望所有三个文本框都是非空字符串。请查看以下代码:

if (textBox1.Text != String.Empty && textBox2.Text != String.Empty && textBox4.Text != String.Empty)
{
  // Code
}
else
{
  MessageBox.Show("Fill required fields");
}

您还可以创建TextBoxes的集合并循环遍历它们以检查非空字符串。像这样:

List<TextBox> _lstTextBoxes = new List<TextBox>();
_lstTextBoxes.Add(textBox1);
_lstTextBoxes.Add(textBox2);
_lstTextBoxes.Add(textBox3);

Boolean checkFailed = false;
foreach(TextBox tb in _lstTextBoxes)
  if(tb.Text == String.Empty)
    checkFailed = true;

if(checkFailed)
  MessageBox.Show("Fill required fields");
else
  //code

通过这种方式,您可以使用更通用的方法轻松添加或删除某些文本框。

答案 5 :(得分:1)

而不是在您的情况下使用OR (||)使用AND (&)

<强>建议

  • 使用Trim中的string功能删除文本框中的任何空格(如果需要)
  • 而不是像textBox1.Text != ""那样比较String.IsNullOrEmpty(textBox1.Text) == false

答案 6 :(得分:-1)

假设您总共有4个文本框,下面的代码将起作用

if ((textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "") || (textBox1.Text != "" && textBox2.Text != "" && textBox4.Text != "") ||
        (textBox1.Text != "" && textBox3.Text != "" && textBox4.Text != "") || (textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "")
        )
    {                  
        // Code             
    }             
    else             
    {                 
        MessageBox.Show("Fill required fields");             
    }