只好自己寫一段 Code 來達到目的,
在 VB2005 的 Form(frmNumericTxtBox.vb) 中加入四個 Text Box (TextBox1~4 )及一個按鈕 (Button1) 和 Lable (Label1)

在 Text Box 中只能輸入正數,其它的字元都會被過濾掉
===================================================
Public Class frmNumericTxtBox Private gstrTmpAs String = "" '記錄暫存的數值 ''將TextBox1~4 KeyDown事件都納入Handle 的範圍 Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown, _ TextBox2.KeyDown, _ TextBox3.KeyDown, _ TextBox4.KeyDown() ''按下任一鍵時,取出目前的內容值 Dim myTxtBox As TextBox = Nothing myTxtBox = sender gstrTmp = myTxtBox.Text End Sub ''將TextBox1~4 TextChanged事件都納入Handle 的範圍 Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, _ TextBox2.TextChanged, _ TextBox3.TextChanged, _ TextBox4.TextChanged() ''判斷是否為數字,若不是則把暫存內容值填入 Dim myTxtBox As TextBox = Nothing myTxtBox = sender If myTxtBox.Text.Trim.Length > 0 Then ''限制只能輸入正數,包含小數,但不能有"," ''因為IsNumeric 對於"," 會視為數字的一種 ''若要有正負號則把InStr(myTxtBox.Text, "-") > 0 這個條件刪除 If IsNumeric(myTxtBox.Text) = False Then Or InStr(myTxtBox.Text, " ") > 0 _ Or InStr(myTxtBox.Text, ",") > 0 _ Or InStr(myTxtBox.Text, "-") > 0 Then myTxtBox.Text = gstrTmp '若其中一個條件不合,就把暫存的值填回TextBox中 myTxtBox.SelectionStart = myTxtBox.Text.Length Else gstrTmp = myTxtBox.Text.Trim End If Else gstrTmp = "" End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ''按下加總時 Dim myTxtBox As TextBox = Nothing Dim myControl As Control = Nothing Dim mySum As Double = 0 ''找出所有的Text Box 然後加總起來 For Each myControl In Me.Controls If TypeOf myControl Is TextBox Then myTxtBox = myControl If myTxtBox.Text.Trim.Length > 0 And IsNumeric(myTxtBox.Text.Trim) = True Then mySum = mySum + CType(myTxtBox.Text.Trim, Double) End If End If Next Label1.Text = "總和: " & vbCrLf & mySum.ToString End Sub End Class=================================================
==== 2012/01/19 新增以下寫法 ====
另一個寫法是將以下的語法加入 KeyPress 的事件中
Private Sub txtBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress,TextBox2.KeyPress _ TextBox3.KeyPress,TextBox4.KeyPress '只允許輸入數字 ' Chr(8) : BackSpace If Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> Chr(8) AndAlso e.KeyChar <> "." Then e.Handled = True End Sub=================================================
感謝您無私的奉獻,謝謝!!這個我正好需要
回覆刪除謝謝
回覆刪除