以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问如何实现文本输入框只能输入数字和小数?(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11011)

--  作者:xiaoqiwei
--  发布时间:2011/7/4 14:03:00
--  请问如何实现文本输入框只能输入数字和小数?(已解决)
请问如何实现文本输入框只能输入数字和小数?比如 整数1-9999,小数1.25 等,输入框中只能输入整数或小数,请问如何实现呢?谢谢!
[此贴子已经被作者于2011-7-4 14:39:04编辑过]

--  作者:hhbb
--  发布时间:2011/7/4 14:22:00
--  

带判断的转换

显然任何类型的数据,都可以转换为字符型。
但是对于其它类型的数据,却有转换失败的可能,例如:

Dim s As String = "abc"
Dim
v As Long = 123
Return
CLng(s) +
v

如果在命令窗口执行上面的代码,会出现错误提示:字符串"abc"无法转换为长整数。
为了解决这个问题,我们可以采用另一种转换方法。

除了String(字符)类型外,所有的基本数据类型,都有一个TryParse方法,用于将其它类型的数据转换为本类型的数据。

语法

Type.TryParse(Value,Variant)

说明

Type:   目标数据类型,例如Date、Integer、Long、Double等等。
Value:  要进行转换的数据。
V
ariant: 用于存放转换结果的变量,变量的类型必须和Type指定的类型一致。

如果转换成功,则将转换结果存储在变量Variant中,并返回True,否则返回False。

例如:

Dim s As string = "123.1"
Dim
d As Double
Double
.TryParse(s, d) \'将变量s的内容转换为数值,并存放在变量d中
Output.Show(d +
100)
\'输出结果是223.1

再例如:

Dim d As Date \'变量d用于存储转换结果
If
Date.TryParse("1999/12/31", d) Then \'如果转换成功
    Output.Show(d)
\'输出转换结果
Else

    Output.Show(
"无效日期格式") \'给出错误提示
End
If


--  作者:xiaoqiwei
--  发布时间:2011/7/4 14:32:00
--  

图片点击可在新窗口打开查看不好意思啊,我想要的是输入框中只能输入数字或小数,不是要转换,例如:我在Keyperss事件中输入

If Char.IsDigit(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False Then
    e.Cancel = True
End If

 

这样就只能输入整数,却不能输入小数,我想实现的只能输入整数和小数都能输入!


--  作者:狐狸爸爸
--  发布时间:2011/7/4 14:33:00
--  
If Char.IsDigit(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False  AndAlso e.KeyChar <> "."  Then
    e.Cancel = True
End If

--  作者:xiaoqiwei
--  发布时间:2011/7/4 14:39:00
--  
Thank you!已解决!
--  作者:hhbb
--  发布时间:2011/7/4 15:42:00
--  
以下是引用xiaoqiwei在2011-7-4 14:32:00的发言:

图片点击可在新窗口打开查看不好意思啊,我想要的是输入框中只能输入数字或小数,不是要转换,例如:我在Keyperss事件中输入

If Char.IsDigit(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False Then
    e.Cancel = True
End If

 

这样就只能输入整数,却不能输入小数,我想实现的只能输入整数和小数都能输入!


這樣也行:

If Val(e.KeyChar)  = False AndAlso Char.IsControl(e.KeyChar) = False AndAlso e.KeyChar <> "0" Then

    e.Cancel = True

End If


[此贴子已经被作者于2011-7-4 16:07:46编辑过]