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

本文关键字:检查 条件 -C# 单个 If 语句 | 更新日期: 2023-09-27 18:21:32

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

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

但是,即使只填充了一个文本框,其余所需的文本框都是空的,这段代码也能工作。

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

 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部分,因为这只是正常的代码流。这将使您期望运行的代码尽可能地向左移动。

您应该将||更改为&&

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

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

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

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
 }

您使用OR(||),而应该使用and(&&)。您希望所有三个文本框都是非空字符串。查看以下代码:

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

这样,您就有了一种更通用的方法,可以轻松地添加或删除某些文本框。

在您的条件下使用AND (&),而不是使用OR (||)

建议

  • 使用string中的Trim函数删除文本框中的空白(如果需要)
  • 与其像textBox1.Text != ""那样进行比较,不如做String.IsNullOrEmpty(textBox1.Text) == false

假设您总共有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");             
    }