2012-01-25 78 views
1

我有一个表单,其中有很多文本框,需要从中填充三个文本框才能提交表单。我不想为每个文本框使用每个If块。是否有任何方法可以为所有三个文本框使用单个if语句?我正在使用下面的代码:在单个If语句中检查多个条件 - C#

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

但是,此代码即使单个文本狐狸填充,其余所需的文本框是空的。

+0

有多少文本框在总计 – Jayy

+0

**建议**:与空字符串比较时,对所有文本框值使用'Trim'。或者你可以使用带'Trim'的'String.IsNullOrEmpty'来进行比较。 –

+0

@AmarPalsapure:或者用.NET 4.0,'String.IsNullOrWhiteSpace' –

回答

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部分,返回或抛出一个错误和ommit的else部分,因为那只是正常的代码流。这使您希望尽可能远地运行的代码。

+0

+1显示使用string.IsNullOrEmpty()的好方法。 – basti

5

你应该改变||&&

3

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

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

您使用OR(||),并应使用AND(& &)来代替。你希望所有三个文本框都是非空字符串。看看下面的代码:

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

您也可以让文本框的收集和循环通过他们来检查非空字符串。类似这样的:

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 

这样你就可以更方便地添加或删除某些文本框。

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 
} 
-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");    
    } 
1

而是使用你的病情OR (||)使用AND (&)的。

建议

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