2014-10-17 54 views
0

我有一個單擊事件處理程序,它必須檢查兩個文本框是否爲空,如果兩者都不是值賦給兩個變量並傳遞給另一個方法。C#跳過如果不爲空

一個變量是一個字符串,另一個是整數。如果字符串爲空,但整數不是,它將正常工作(它不應該!)。但是,如果整數爲空並且String不是,它會給我一個預期的錯誤,因爲它不應該達到那個點。

下面的代碼:

 private void btnInsert_Click(object sender, EventArgs e) 
    { 
     String ActorName; 
     int Position; 
     if ((txtPosition.Text != null)) 
     { 
      if ((txtActorName.Text != null)) 
      { 
       ActorName = txtActorName.Text; 
       Position = int.Parse(txtPosition.Text); 
       InsertIntoArrayList(ActorName, Position); 
       PopulateActors(); 
      } 
      else 
      { 
       MessageBox.Show("Please enter an Actor Name"); 
       return; 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please enter a position"); 
      return; 
     } 
    } 

正如你可以看到,如果txtPosition不爲空,它然後測試txtActorName。如果其中任何一個爲空,則會拋出相關消息。假設兩者都不爲空,它將值賦給變量並將它們傳遞給InsertIntoArrayLIst方法,然後調用PopulateActors方法。

如果我輸入演員姓名和職位,一切工作正常。只有當我不輸入某個位置時,它纔會錯過Nothings進入的位置,然後滑到Position = int.Parse(txtPosition.Text);行,因爲txtPosition爲空。

任何幫助將不勝感激!

+3

not empty =/= not null – Raptor 2014-10-17 03:31:50

回答

5

嘗試使用例如!string.IsNullOrEmpty(txtPosition.Text)而不是txtPosition.Text != null。可以使用txtPosition.Text != ""。畢竟,Text屬性應該永遠不會爲null。

當然,您應該對值txtPosition和txtActor應用相同的修復。

+0

啊,我知道這很簡單!謝謝彼得。 – mrkd1991 2014-10-17 03:39:20

1
  1. 請勿混淆null和空字符串。他們不是一回事。
  2. 如果您明確將其設置爲空,則任何控件的Text屬性將永遠爲null。在大多數情況下,您根本不需要檢查該屬性;只是比較一個空字符串就足夠了
  3. String.IsNullOrEmpty()String.IsNullOrWhitespace()方法是你的朋友。
  4. 沒有理由嵌套If塊。只需使用警衛條款檢查一個跟着另一個清潔代碼:

private void btnInsert_Click(object sender, EventArgs e) 
{ 

    if (string.IsNullOrWhitespace(txtPosition.Text)) 
    { 
     MessageBox.Show("Please enter a position"); 
     return; 
    } 
    if (string.IsNullOrWhitespace(txtActorName.Text)) 
    { 
     MessageBox.Show("Please enter an Actor Name"); 
     return; 
    } 
    int Position; 
    if (!int.TryParse(txtPosition.Text, out Position)) 
    { 
     MessageBox.Show("Please enter a number in the position field"); 
     return; 
    } 

    InsertIntoArrayList(txtActorName.Text, Position); 
    PopulateActors(); 
} 
0

如果您還想檢查空格,也可以使用if (!string.IsNullOrWhiteSpace(txtPosition.Text)。雖然性能方面比較慢,但使用標準的方法是使用標準的另一種方法來檢查,即使用標準的string.IsNullOrEmtpy

if (txtPosition.Text != string.Empty)

0

試試這個,它可能會解決您的問題

ActorName = txtActorName.Text;

Position = int.Parse(txtPosition.Text ==「」?「0」:txtPosition.Text);