2011-06-09 162 views
1

我試圖驗證窗體中的文本框沒有空字符串,如果用戶沒有在文本框中輸入任何東西,所以如果文本框是空的,用戶必須輸入價值,我的代碼是這樣的,但它不工作textbox空驗證

public int TextBox_Validation(string sender) 
    { 


     try 
     { 

      if (string.IsNullOrEmpty(sender)) 
      { 
       MessageBox.Show("Please enter a value"); 
      } 

     } 
     catch 
     { 
      int num = int.Parse(sender); 
      return 0; 

     } 
     return 0; 
    } 
+1

我沒有看到任何可以扔在你的'try'塊的異常讓你'抓'塊幾乎沒用。 – 2011-06-09 18:37:00

+1

另外,如果我們知道你使用的是什麼平臺--- silverlight,wpf,asp.net,winforms,控制檯等,我可能會有所幫助。 – 2011-06-09 18:38:29

+0

在什麼時間點(事件)被調用? ...更詳細的代碼會有幫助...可能是這種方法是正確的,錯誤在於你傳遞給該方法的值是什麼... – knurdy 2011-06-09 18:40:34

回答

2

發件人一般是指剛剛發送的對象,所以請您發送文本框的文本,而不是文本框的參考。

此外,你總是返回零。將您的代碼更改爲以下內容。如果驗證通過,您將返回1,如果失敗,您將返回0。順便提一句,你應該使用boolean而不是int。我註釋掉下面,因爲它沒有做任何有建設性的在這種情況下一條線:

try 
{ 
    if (string.IsNullOrEmpty(sender)) 
    { 
     MessageBox.Show("Please enter a value"); 
     return 0; 
    } 
} 
catch 
{ 
    //int num = int.Parse(sender); 
    return 0; 
} 
return 1; 

我建議你改變你的方法到下面。你不需要你try {} catch {}因爲isNullOrEmpty覆蓋孤獨的潛在的空問題:

bool ValidateText(string Text) 
{ 
    if (string.IsNullOrEmpty(Text)) 
    { 
     MessageBox.Show("Please enter a value"); 
     return false; 
    } 
    return true; 
} 
+0

它看起來不像這裏的事件處理程序,所以發件人可以是任何@susan想要的 – 2011-06-09 18:40:07

+1

@Muad,我知道。這是一個警告,因爲這個名字在我的腦海中引起了紅旗。 – 2011-06-09 18:43:28

1
public bool TextBox_Validation(string sender) { 
     return !string.IsNullOrEmpty(sender); 
} 

     if(TextBox_Validation(textbox1.Value)) { 
      //OK 
     } else { 
      MessageBox.Show("Please enter a value"); 
      //ETC 
     } 
1

你是不是拋出一個異常,那麼你就不會讓它進入catch塊。

public int TextBox_Validation(string value) 
{ 
    int integer = 0; 

    if(string.IsNullOrEmpty(value)) 
    { 
     MessageBox.Show("Please enter a value");  
    } 
    else 
    { 
     int.TryParse(value, out integer); 
    } 

    return integer; 
} 
1

try-catch塊沒用,方法應該返回bool,並且不應該顯示任何消息。在單一方法中不相關的東西是不好的做法(顯示消息,返回一些無意義的數字等)。如果它是驗證方法,它應該告訴你只有一件事 - 傳遞的字符串是否有效(在你的情況下只是一個單一的布爾),就這些了。您應該考慮以另一種方法向用戶顯示消息。還有一件事 - 根據你使用的技術,它可能有更好的驗證支持(WF中的驗證,WPF中的驗證規則等),使用它們,而不是處理一些輸入事件

1

你算法不正確。 catch塊用於捕獲在前面的try塊內發生的錯誤。在這種情況下,我沒有看到發生運行時錯誤,所以可能不需要try/catch塊,但我會以例子的方式離開。另外,你的函數沒有提供讓程序知道它是否爲空的方法。如果它是空的,你可以返回0,否則返回1。或返回布爾值true或false。也許這樣的功能會更好:

public bool TextBox_Validation(string sender) 
    { 
     try 
     { 

      if (string.IsNullOrEmpty(sender)) 
      { 
       MessageBox.Show("Please enter a value"); 
       return false; 
      } 
      else 
       return true; 

     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      return false; 
     } 
    } 
1

你可以嘗試這樣的事情,而不是

if (String.IsNullOrEmpty(txtTextBox.Text)) 
    { 
     MessageBox.Show("Enter Value Please.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);   
    } 
    else 
    { 
//whatever u need to do 
    }