2010-11-30 27 views
1

我有一個像這樣的函數,它檢查字段是空的還是空的,然後將setError圖標放在文本框的旁邊。string.empty和string.isnullorempty

 private bool ValidateHost() 
     { 
     ErrorProvider errorProvider = new ErrorProvider(); 
     bool isValid = true; 

     //If the txtHost is empty, show a message to user    
     if(txtHost.Text == string.Empty) 
      { 
      errorProvider.SetError(txtHost, "Please enter the host address"); 
      isValid = false; 
      } 
     else 
      errorProvider.SetError(txtHost, string.Empty); 
     return isValid; 
     } 

,但是當我試圖用字符串,然後isnullorempty我沒有得到SETERROR圖標.. 你們可以PLZ告訴我什麼是在這種情況下使用string.isnullorempty的正確方法..

+1

*你*是如何使用它的?它應該能夠很好地處理`if(string.IsNullOrEmpty(txtHost.Text))`。 – 2010-11-30 10:59:35

+0

「恐怖圖標」? – annakata 2010-11-30 11:01:22

回答

5

string.IsNullorEmpty()是一個靜態方法,調用如下:

if (string.IsNullOrEmpty(txtHost.Text)) 
{ 
    errorProvider.SetError(txtHost, "Please enter the host address"); 
    isValid = false; 
} 

你也可以考慮類似string.IsNullOrWhitespace如果空格,製表符等也無效。

0

更改IF條件 -

if(string.IsNullOrEmpty(txtHost.Text)) 
{ 
    ... 
} 
7

我的猜測是你試圖使用它,就好像它是一個實例方法,像這樣:

if (txtHost.Text.IsNullOrEmpty()) 

這不是一個實例方法 - 這是一個靜態方法,所以你這樣使用它:

if (string.IsNullOrEmpty(txtHost.Text)) 

它不是一個實例方法,因爲否則如果txtHost.Text爲空,則方法調用將拋出NullReferenceException,這正是我們試圖避免的。

可能寫一個擴展方法可以應付null,但是據我所知在框架中沒有一個。

0

難道這不是他真正的字符串測試嗎?

ErrorProvider errorProvider = new ErrorProvider();

Hmpf。認真。 ErrorProvider應該存在於窗體上。你正在創建一個(它在方法結束時變爲無效),甚至沒有在表單中正確地連接它們。

ErrorProvider應該放在窗體上。