2009-11-15 107 views

回答

3

忽略所有,但數字

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 
    e.Handled = Not Char.IsDigit(e.KeyChar) 
End Sub 
+2

如果用戶右鍵單擊該文本框並粘貼一些文本,該怎麼辦? – 2009-11-15 17:31:29

0

e.Handled =不Char.IsDigit

+1

@Lala:這不能編譯,因爲... – 2009-11-15 03:53:47

6

與另一個控制選項替換文本?根據我的經驗,如果您只想將輸入限制爲數字值,則發現NumericUpDown控件更易於使用。

它也有可愛的上下箭頭,但最重要的是,它不需要額外的代碼。

+3

也限制了用戶的困惑。當他們無法輸入任何內容時,他們不會感到驚訝。 – 2009-11-15 16:47:36

2

過濾鍵很難保證用戶輸入一個有效的號碼。時間間隔爲0可能不是好事。當用戶按下Ctrl + V時不會過濾輸入。作爲一名程序員,我偏愛接受2E3作爲有效輸入的程序。

驗證事件是爲了解決這個問題。在表單和ErrorProvider上放置幾個文本框:

Private Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating 
    If TextBox1.Text.Length = 0 Then Exit Sub 
    Dim value As Double 
    If Not Double.TryParse(TextBox1.Text, value) or value <= 15 or value > 1E6 Then 
     TextBox1.SelectAll() 
     ErrorProvider1.SetError(TextBox1, "Not a valid number") 
     e.Cancel = True 
    Else 
     TextBox1.Text = value.ToString("N0") 
     ErrorProvider1.SetError(TextBox1, "") 
     Timer1.Interval = CInt(value) 
    End If 
    End Sub 
0

您可以過濾出特定的鍵。此方法只允許數字,刪除,退格,左箭頭和右箭頭

Private Sub txtBox_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles yourTxtboxName.KeyDown 
    Try 

      If Not (e.KeyValue = 8 Or e.KeyValue = 46 Or e.KeyValue = 48 Or e.KeyValue = 49 Or e.KeyValue = 50 Or e.KeyValue = 51 Or e.KeyValue = 52 Or e.KeyValue = 53 Or e.KeyValue = 54 Or _ 
       e.KeyValue = 55 Or e.KeyValue = 56 Or e.KeyValue = 57 Or e.KeyValue = 96 Or e.KeyValue = 97 Or e.KeyValue = 98 Or e.KeyValue = 99 Or _ 
       e.KeyValue = 100 Or e.KeyValue = 101 Or e.KeyValue = 102 Or e.KeyValue = 103 Or e.KeyValue = 104 Or e.KeyValue = 105 Or e.KeyValue = 37 Or e.KeyValue = 39) Then 

       e.SuppressKeyPress() = True 

      End If 
    Catch ex As Exception 
      'error handling 
    End Try 
相關問題