2012-01-25 79 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