今天小出來為大家解答以上問題。winform textbox只能輸入數字,在VB中限制TextBox只能輸入數字包括粘貼很多人還不知道,現在讓我們一起來看看吧!
1、首先我們最好添加一個模塊,這樣無論你需要實現多少個TextBox控件,都只能輸入數字,直接調用。
2、打開Modoule1模塊,首先定義三個全局變量來保存TextBox的當前狀態,代碼如下:
3、LastText變量用于記錄TextBox的最后一次正確輸入。
4、' LastLen變量用于保存上次正確輸入文本框時的字符串長度,以便恢復光標的最后位置。
5、“NotText”變量用于防止CPU在撤銷期間因兩次檢測而負擔過重。
6、PublicLastTextAsString,LastLenAsInteger,NotTextAsBoolean
7、既然我的方法是檢測輸入為非數值,也就是撤銷到之前的狀態,那么我們是給需要限定的TextBox賦一個正確的初始值,還是寫成一個模塊,可以方便所有的TextBox調用。代碼如下:
8、function initialize(MyTextAsTextBox)
9、馬頔元
10、a=我的文本“1”
11、如果是數字(a),則my text=' 0 ' '確保TextBox的初始值是一個數字。
12、LastText=MyText
13、LastLen=Len(MyText)
14、NotText=False
15、結束函數
16、然后是核心代碼,就是檢測輸入或者粘貼到文本框中的內容是否是數字。通用代碼也寫在Modoule1模塊中,代碼如下:
17、function only numbers(MyTextAsTextBox)
18、ifnottextthenottext=false : exit function
19、馬頔美元,b美元,c%,d%
20、a=我的文本。文本
21、b=a
22、c=Len(MyText。正文)
23、保存光標的位置。互聯網上很多限制數字輸入的代碼,要么屏蔽退格小數點等按鍵,要么改變光標位置。
24、d=我的文本。所選文本的起點
25、字符D是十進制數的結束標記,字符E是科學計數的形式。下面兩行擋住了這兩個字母。如果需要使用科學計數,可以靈活修改。
26、a=Replace(a,' E ','',1,-1,1)
27、a=Replace(a,' D ','',1,-1,1)
28、擋住字母D和E會使光標位置的判斷同時出錯。
29、IfabThend=d-1
30、這樣,給B賦值就是考慮負數和小數。如果是正整數,去掉這一行和前一行。
31、b=一個“1”
32、是否允許文本框的內容為空?在這里,你可以自己設置。我被允許在這里空著。
33、Ifa=' '退出功能
34、之所以使用錯誤的方法是為了撤銷上一個正確的方法,是因為關鍵檢測方法無法檢測到直接粘貼的數據。
35、如果數字(b)那么
36、LastText=a
37、LastLen=Len(a)
38、其他
39、NotText=True
40、a=最后文本
41、d=d LastLen-c
42、結束條件
43、恢復光標的位置
44、我的短信。Text=a
45、我的短信。SelStart=d
46、結束函數
47、我們把核心代碼都寫成模塊了,看不懂也沒關系。直接復制粘貼我寫的模塊就行了。在表單中,你只需要調用我寫的兩個模塊。例如,如果要將Text1限制為僅輸入數字,可以添加以下代碼:
48、PrivateSubText1_Change()
49、OnlyNumbersMe。文本1
50、末端接頭
51、PrivateSubText1_GotFocus()
52、首字母縮寫。文本1
53、末端接頭
54、同樣,如果有文本
55、2Text3等TextBox需要限定,調用我寫的模塊就行了。甚至可以調用Form2中的Text2,如下所示:
56、PrivateSubText2_Change()
57、OnlyNumbersForm表單
58、文本2
59、末端接頭
60、PrivateSubText2_GotFocus()
61、初始化表單
62、文本2
63、末端接頭
64、然后,我隨便畫了兩個TextBox,可以看到Text1的輸入限制并不影響Text2的輸入限制:
本文到此結束,希望對大家有所幫助。