2011-06-19 122 views
7

我有一些代碼檢查並確保當用戶輸入字段時,必須輸入1 - 10的整數。C# - 文本框驗證

雖然如果用戶需要關注該字段,那麼「壞」數據(如「fdgfdg」)仍然留在該字段中。那麼有些人可以演示如何在現場丟失焦點,如果數據無效,則會輸入默認值,例如5

private void textBox4_TextChanged(object sender, EventArgs e) 
     { 
      try 
      { 
       int numberEntered = int.Parse(textBox4.Text); 
       if (numberEntered < 1 || numberEntered > 10) 
       { 
        MessageBox.Show("You must enter a number between 1 and 10"); 
       } 
      } 
      catch (FormatException) 
      { 

       MessageBox.Show("You need to enter an integer"); 
      } 
     } 
+1

@Gats:這是的WinForms桌面應用程序... –

+0

這是沒有的WinForms一個網頁。 – 2011-06-19 20:46:12

+1

@Gats:即使它是一個Web應用程序,服務器端驗證也是必需的。客戶端驗證應該是服務器端驗證的一個方便補充。 –

回答

14

有幾個事件,你可以在這裏使用,LeaveLostFocusValidating上有MSDN here這些不同事件的更多討論。

在某些情況下的LeaveLostFocus將不會觸發所以最好在你的情況下使用的是Validating事件:

textBox1.Validating += new CancelEventHandler(textBox1_Validating); 


    void textBox1_Validating(object sender, CancelEventArgs e) 
    { 
     int numberEntered; 

     if (int.TryParse(textBox1.Text, out numberEntered)) 
     { 
      if (numberEntered < 1 || numberEntered > 10) 
      { 
       MessageBox.Show("You have to enter a number between 1 and 10"); 
       textBox1.Text = 5.ToString(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("You need to enter an integer"); 
      textBox1.Text = 5.ToString(); 
     } 
    } 
+0

謝謝,這是一個很好的例子 – Jay

0

如果你是手卷驗證像你這樣在這裏,所有你需要做的是在你之後設置默認值MessageBox.Show ()

標準的WinForms

我不認爲你有任何的驗證框架的支持,但你可以看看這個:http://msdn.microsoft.com/en-us/library/ms951078.aspx的靈感,所以你不要在你的應用程序

+0

明亮的想法.. :) – Jay

0

我們撒這個邏輯E中的Leave事件上的文本框控件來驗證並設置默認值