2010-10-01 58 views
0

我有這個代碼從MSDN,只允許數字字符到文本框。 但我不能修改它以接受「。」作爲一個輸入和限制。如何允許,限制爲一個「。」 (句點)字符在TextBox中? (C#Winforms)

Ex: 12.50  valid! 
    236.3247 valid! 
    2..5  invalid 
    //other non-numeric input invalid 

考慮下面的代碼:

private bool nonNumberEntered = false; 

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    nonNumberEntered = false; 

    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) 
    { 
     if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) 
     { 
      if (e.KeyCode != Keys.Back) 
      { 
       nonNumberEntered = true; 
      } 
     } 
    } 
    if (Control.ModifierKeys == Keys.Shift) 
    { 
     nonNumberEntered = true; 
    } 
} 

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (nonNumberEntered == true) 
    { 
     e.Handled = true; 
    } 
} 

請發表您的修改後的代碼。非常感謝。

+0

我認爲使用正則表達式簡單驗證期望的字符串會更容易,而不是嘗試手動編寫此類掃描器。 – 2010-10-01 02:27:25

回答

1

我有一個文本框,我只想要數字和逗號,所以它與您擁有的相似。

我只是在textbox.Text上運行一個正則表達式來匹配每個按鍵的數字和零個或一個小數點。如果要創建的字符串不匹配,則禁止該字符。

我認爲.NET的例子是 「^ \ d * \ d * $?」

從左至右依次爲:

  • ^在字符串的開頭
  • \ d *零個或多個數字
  • 。?零或一個週期
  • \ d *零個或多個數字

的$結束不完全是你有什麼以上,但該會工作。

+0

我不明白正則表達式...... :( – yonan2236 2010-10-01 02:31:54

+0

@ yonan2236,那麼,然後使用斯科特的解決方案。 – 2010-10-01 02:38:08

+0

包括正則表達式可能工作。更多信息:http://msdn.microsoft.com/en-us/library/ az24scfc%28V = VS.71%29.aspx – John 2010-10-01 04:11:43

3

我只是驗證字段作爲一個文化敏感的數字後,他們標籤或表單提交。實際阻止他們按下並不是真的必要或有價值。在現場兩次。通常我會發現那種令人討厭的東西,因爲我正在修改那裏的東西,而我還沒有完成...

使用double.TryParse正確地進行測試。

相關問題