編制計算類程式時文字方塊一般都用於輸入數位資料,此時可以通過以下步驟來確保使用者輸入資料的正確性:

 

首先添加好文字方塊控制項TextBox後把屬性IMEMode的值改成Disable,這樣在該文字方塊中就不能使用中文輸入法了。然後對文字方塊的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
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()