編制計算類程式時文本框一般都用于輸入數字資料,此時可以通過以下步驟來確定使用者輸入資料的正确性:首先添加好文本框控件TextBox後把屬性IMEMode的值改成Disable,這樣在該文本框中就不能使用中文輸入法了。然後對
KeyPress
文本框的KeyPress事件添加以下代碼
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 = Chr(8) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
其中e.KeyChar是鍵盤輸入的鍵對應的字元,IsDigit函數可以判斷是否為0到9的數字,Chr(8)為倒退鍵,當e.Handled為True時,程式認為該KeyPress事件已經被處理過了,文本框的内容也就不會發生變化了。從以上程式中不難看出,此時文本框隻能接受數字和倒退鍵,也就是說這個文本框是用來輸入整數的。
小數點
如果文本需要輸入小數的話,就要能夠輸入小數點".",而且小數點隻能輸入一次,此時可以将上面的函數改為下面的格式:
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 = Chr(8) or e.KeyChar = "." Then
If e.KeyChar = "." And InStr(TextBox1.Text, ".") > 0 Then
e.Handled = True
Else
e.Handled = False
End If
Else
e.Handled = True
End If
End Sub
其中函數InStr傳回指定字元在字元串中的位置,當字元串中不含此字元時,傳回一個負數。這時文本框可以用來輸入正整數及小數。
負數
如果文本需要輸入負數的話,就要能夠輸入負号"-",而且隻能是文本框輸入的第一個字元,此時又可以将上面的函數改為下面的格式:
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
這時文本框可以用來輸入正的或負的整數及小數。
批量處理
當有多個文本框需要做輸入限制時,可以在以上代碼Handles後面加上多個文本框的KeyPress事件,各事件之間用逗号隔開,例如
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress,Textbox2.KeyPress,Textbox3.KeyPress
對于要判斷文本框内容的函數,就要把代碼進行修改,使其能夠同時處理多個文本框,也就是把上面後兩段程式中的TextBox1.Text改為CType(sender, TextBox).Text,這樣一來就能夠對号入座了,比如上面能夠輸入負号的代碼就可以改成:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles
Textbox1.KeyPress,Textbox2.KeyPress,Textbox3.KeyPress
If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then
If e.KeyChar = "." And InStr(CType(sender, TextBox).Text, ".") > 0 Then
e.Handled = True
Else
e.Handled = False
End If
ElseIf e.KeyChar = "-" And CType(sender, TextBox).Text = "" Then
e.Handled = False
Else
e.Handled = True
End If
End Sub