2012-06-07 57 views
1

我有一個窗體的檢查,幾個文本框不是null。如果其中任何一個是,它應該顯示一個消息框,重置文本框並讓用戶再次嘗試。我相信我在檢查文本框是錯誤的。我怎樣才能做到這一點?謝謝。保留文本框值的表單 - 重置?

public void ShowPaths() 
    { 
     if (textBox1.Text == null | textBox2.Text == null) 
     { 
      MessageBox.Show("Please enter a Project Name and Number"); 
     } 
     else 
     { 
      sm.projNumber = textBox1.Text; 
      sm.projName = textBox2.Text; 

      textBox3.Text = sm.Root("s"); 
      textBox4.Text = sm.Root("t"); 
     } 
     textBox1.ResetText(); 
     textBox2.ResetText();   
    } 

回答

3

此行是錯誤的,原因有二

當你讀它
if (textBox1.Text == null | textBox2.Text == null) 
  1. 一個textbox.Text永遠不能爲null ,這是一個空字符串
  2. 您使用的是位OR運算符|時,你應該使用邏輯||

所以正確的路線是

if (textBox1.Text == string.Empty || textBox2.Text == string.Empty) 
{ 
    MessageBox(......); 

    // See the comment below 
    textBox1.ResetText();  
    textBox2.ResetText(); 
} 

從你的問題不清楚,如果你想重置文本框的錯誤,或者如果你想重置總是像你現在這樣做。如果只想在出現錯誤的情況下重置,則移動if塊中的兩個ResetText

+0

你好。我已經嘗試了ResetText(),但對我來說不起作用。我使用VB2010 express。它有重置文本方法,但它什麼都不做 – EmPlusPlus

0

的WinForms Texboxes從來沒有在我的經驗表明null,而不是返回String.Empty

您可以使用String.IsNullOrEmpty(textBox1.Text)來檢查兩種情況。如果您使用的是.Net 4,則可以使用String.IsNullOrWhiteSpace(textBox1.Text),這對空間也會返回true。

if (String.IsNullOrWhiteSpace(textBox1.Text) || String.IsNullOrWhiteSpace(textBox2.Text)) 
0

使用

if (textBox1.Text == null || textBox2.Text == null) 

,而不是

if (textBox1.Text == null | textBox2.Text == null) 

你沒有正確使用OR (||)運營商。使用String.IsNullorEmpty(string)檢查字符串變量中的空值和空值。

0
if ((textBox1.Text == String.Empty) || (textBox2.Text == String.Empty)) 

如果Textbox1的爲空或TextBox2中是空的(注意的||代替|) 同樣的Text屬性永遠不能爲null。它始終是一個字符串,但它可能是空的(或的String.Empty「」)

0

TextBox的.Text屬性永遠不會爲空。你所尋找的是一個空字符串,那麼:

if (textBox1.Text.Equals(string.Empty) || textBox2.Text.Equals(string.Empty)) 

if (textBox1.Text == "" || textBox2.Text == "") 

if (String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text)) 

|運營商應該是一個||爲好。但這只是問題的一部分。

0

雖然我不是說服了一個文本框可以有一個空值,我用String.IsNullOrEmpty

if(String.IsNullOrEmpty(textBox1.Text) || String.IsNullOrEmpty(textBox2.Text)) 
{ 
    //... 
}