VB6.0文本框格式化输入(千分位和小数点)

先挂个5分吧,我提的问题总是没有答案,等有了好的再加分怎么样让VB文本框变成格式化输入框。主要是自动添加小数点和千分位。例如:键盘输入12345在输入过程中直接转换为:1... 先挂个5分吧,我提的问题总是没有答案,等有了好的再加分

怎么样让VB文本框变成格式化输入框。
主要是自动添加小数点和千分位。

例如:键盘输入12345
在输入过程中直接转换为:123.45
输入:12345678
转换为:123,456.78

注意,我要的效果是在输入过程中直接产生,而不是输入结束后再转换格式。
用VBA做了一个模拟的
建立一个textbox1
代码如下:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
MsgBox (Format(TextBox1.Text, "#,###.00"))
End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox1.Text) = 2 Then
TextBox1.Text = Format(TextBox1.Text / 10, "#,###.0")
ElseIf Len(TextBox1.Text) > 2 Then
TextBox1.Text = Format(TextBox1.Text * 10, "#,###.0")
End If
End Sub

其中KeyCode = vbKeyReturn是调试用的,以便察看效果。
现在的问题是支持输入不支持删除
如果用Del或者BackSpace删除几个数字就会出错。
-------------------------------------------------------------
1楼的想法我试过了
由于keypress不能获取del和backspace值
将keypress事件放在keydown事件中
并且Len(TextBox1.Text) > 2又增加一个条件keycode<>8
但是依然没有效果

问题是:
本次<BackSpace>删除,对本次格式转换来说是正确的
错误产生在按过<BackSpace>之后的下一次按键事件
展开
 我来答
lxz1969
2009-08-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8524
采纳率:33%
帮助的人:1.1亿
展开全部
用一个变量接收输入的数据,在内存中转化好了,再显示到TEXT1中
daofuuq
2009-07-26 · TA获得超过483个赞
知道小有建树答主
回答量:2560
采纳率:0%
帮助的人:924万
展开全部
你的事件包含了按删除的按键事件,用
if KeyCode=8 Then这样限制下条件试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式