| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 666 人关注过本帖
标题:如何保证文本框内输入的数字(我的数字是说可以包括小数的)
只看楼主 加入收藏
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
结帖率:51.67%
收藏
已结贴  问题点数:20 回复次数:5 
如何保证文本框内输入的数字(我的数字是说可以包括小数的)
在论坛内我找到以下代码,我知道,这个只是限制整数的,如何扩大到还能输入小数呢??


Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57 '0-9,這裏還可以限制只能輸入哪幾個數字
Exit Sub
Case 8 '退格鍵
Exit Sub
Case 46 'Delete鍵
Exit Sub
Case Else
KeyAscii = 0
End Select
End Sub

请高手指点一下。。。。谢谢!!
搜索更多相关主题的帖子: 文本框 如何 
2012-01-13 21:33
shi781203
Rank: 2
来 自:广东省
等 级:论坛游民
帖 子:112
专家分:50
注 册:2011-3-18
收藏
得分:20 
用VB的内部函数IsNumber()就能解决你这个问题了!

飞点燃费盐--历史上至有型的计算机病毒(能感染你是我的荣幸,也是你的光荣!)
2012-01-14 01:27
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
收藏
得分:0 
内部函数IsNumber()怎么能完全解决叱??我也是别人提醒了,象2e2 输入这个照样不会提醒。。。。版主、高手在不?请出手支招
2012-01-14 09:17
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
收藏
得分:0 
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57 '0-9,這裏還可以限制只能輸入哪幾個數字
Exit Sub
Case 8 '退格鍵
Exit Sub
Case 46 '小数点不是Delete鍵 ,跟踪发现按Delete鍵是的不触发按下事件的。。。。
Exit Sub
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Len(Text1) - InStrRev(Text1, ".") >= 2 And InStr(Text1, ".") <> 0 Then
If KeyAscii = 13 Or KeyAscii = 8 Or KeyAscii = 9 Then
Else
KeyAscii = 0
End If
End If
End Sub
---------------
下面的代码,也是从网上搜索来的,好象还可以 的。。。。
Public Function Numeric_Only(x As Integer) As Integer     ' Bybal
Select Case x
  Case 8, 9, 13, &H30 To &H39, Asc(".") '可以根据需要增减
  Numeric_Only = x
  Case Else
  Numeric_Only = 0
  End Select
End Function

Public Function Hex_Only(x As Integer) As Integer     'Bybal
  Select Case x
  Case 8, 9, 13, &H30 To &H39, Asc("A") To Asc("F")
  Hex_Only = x
  Case Asc("a") To Asc("f")
  Hex_Only = x - 32
  Case Else
  Hex_Only = 0
  End Select
End Function

'调用:
Private Sub Text1_KeyPress(KeyAscii As Integer)
  '只能输入数字
  KeyAscii = Numeric_Only(KeyAscii)
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
  '只能输入十六进制数字
  KeyAscii = Hex_Only(KeyAscii)
End Sub
2012-01-14 11:08
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
Private Sub Text1_KeyPress(KeyAscii As Integer) '只能输入数字
Const xStr As String = "0123456789." '先声明一个常量,并把你想禁用或允许输入的内容赋值给它(这里表示只能输入0123456789.这几个)
KeyAscii = IIf(InStr(xStr & Chr(8), Chr(KeyAscii)), KeyAscii, 0)
End Sub

学习--------------学习-------------------学习--------------------!!
2012-02-07 12:24
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
楼上正解,不过如果加一句就可以通过回车键将焦点放到下个控件了,代码如下:
Private Sub Text1_KeyPress(KeyAscii As Integer)
  Const xStr As String = "0123456789." '先声明一个常量,并把你想禁用或允许输入的内容赋值给它(这里表示只能输入0123456789.这几个)
  If KeyAscii = 13 Then SendKeys "{tab}"  '如果按下的是回车键自动将输入焦点转到下个控件
  KeyAscii = IIf(InStr(xStr & Chr(8), Chr(KeyAscii)), KeyAscii, 0)
End Sub
2012-02-07 13:50
快速回复:如何保证文本框内输入的数字(我的数字是说可以包括小数的)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026555 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved