天天看點

文本框中隻能輸入數字

1 同上上篇日志  老師給的代碼

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim c As Char
        c = e.KeyChar
        If c = "."c Then
            If InStr(TextBox1.Text, e.KeyChar) > 0 Or (InStr(TextBox1.Text, "-") > 0) And (TextBox1.SelectionStart = 0) Then
                e.KeyChar = ""
            End If
        ElseIf c = "-"c Then
            If InStr(TextBox1.Text, c) > 0 Or TextBox1.SelectionStart > 0 Then
                e.KeyChar = ""
            End If
        ElseIf c = "0"c Then
            If (TextBox1.SelectionStart = 0 And Not TextBox1.Text.StartsWith("0") And TextBox1.Text.Length <> 0) Or (TextBox1.SelectionStart <= 1 And TextBox1.Text.StartsWith("0")) Then
                e.KeyChar = ""
            End If
        ElseIf c = ControlChars.Back Then
        ElseIf InStr("123456789", e.KeyChar) <= 0 Then
            e.KeyChar = ""
        End If
    End Sub      

說實話看的不是太懂=_+

e.KeyValue、e.KeyChar 都可以獲得鍵盤的輸入值,請問兩種在用法和功能上有什麼差別?

KeyChar是在keyPressEvent裡面獲得的char類型傳回值,

KeyValue取得KeyDown 或KeyUp事件的鍵盤值,傳回的整形。

InStr

傳回一個整數,該整數指定一個字元串在另一個字元串中的第一個比對項的起始位置。

String2 位于 String1 ---------------比對開始的位置

TextBoxBase.SelectionStart 屬性

擷取或設定文本框中標明的文本起始點。

2. 控制鍵盤隻能輸入數字//未驗證

private   void   textBox3_KeyPress(object sender,System.Windows.Forms.KeyPressEventArgs e) 
{ 
//阻止從鍵盤輸入鍵 
e.Handled = true; 
if(e.KeyChar> =48 && e.KeyChar<=57) 
  { 
   e.Handled  = false; 
  } 
}       

3.參考網頁:

http://hi.baidu.com/pepsisoft/blog/item/d8664327bb011c03908f9d2c.html

  //這個我看懂了=_+

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
    If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then
        If e.KeyChar = "." And InStr(TextBox1.Text, ".") > 0 Then
            e.Handled = True
         Else
             e.Handled = False
         End If
     ElseIf e.KeyChar = "-" And TextBox1.Text = "" Then
         e.Handled = False
     Else
         e.Handled = True
     End If
End Sub
      

====================

另有一文章是搜keychar搜到的,關于Datagrid鍵盤事件響應。

http://www.newasp.net/tech/net/10081.html

繼續閱讀