textbox如何实现实时千位分隔?

plst 2005-12-28 02:37:44
在输入数据的时候实时地将数据显示为:23,345,444.23。不是输入完成后在转换成这种格式,而是每输入一个数字都自动显示为这种格式。
...全文
338 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
foshan 2006-03-24
  • 打赏
  • 举报
回复
很关注这个问题,问题仍未解决,寻求最佳的解决方案,谢谢大家!
虫青菜 2005-12-30
  • 打赏
  • 举报
回复
Private Sub Text1_Change()
text1=format$(csng(text1),"###,###,###,###.##")
End Sub
Tiger_Zhao 2005-12-30
  • 打赏
  • 举报
回复
Private Sub Text1_Change()
Static s_ReEntry As Boolean
If s_ReEntry Then Exit Sub
s_ReEntry = True
'将 Text、SelStart、SelLength 分别存入变量;
'对 Text 进行从右到左的逐个字符扫描:
' 在需要的位置添加字符 ",",在不需要的位置删除字符 ",",
' 添加和删除字符时调整 SelStart、SelLength 的值;
'将 Text、SelStart、SelLength 变量赋值给 Text1;
s_ReEntry = False
End Sub
虫青菜 2005-12-30
  • 打赏
  • 举报
回复
FormatNumber函数


描述

返回一个数字格式的表达式。

语法

FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatNumber函数语法有如下几部分:

部分 描述
Expression 必需的。要被格式化的表达式。
NumDigitsAfterDecimal 可选的。数字值,表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。
IncludeLeadingDigit 可选的。三态常数,表示小数点前是否显示零。关于其值,请参阅“设置值”部分。
UseParensForNegativeNumbers 可选的。三态常数,表示是否把负数值放在圆括号内。关于其值,请参阅“设置值”部分。
GroupDigits 可选的。的三态常数,表示是否用组分隔符对数字分组,组分隔符在计算机的区域设置值中指定。关于其值,请参阅“设置值”部分。


设置值

IncludeLeadingDigit、UseParensForNegativeNumbers和GroupDigits参数的设置值如下:

常数 值 描述
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2 用计算机区域设置值中的设置值。


说明

当忽略一个或多个选项参数时,被忽略的参数值由计算机的区域设置值提供。

注意 所有设置值信息都来自“区域设置”的“数字”选项卡。
dqhuaying 2005-12-29
  • 打赏
  • 举报
回复
northwolves(狼行天下)的方案最接近了,但还不完美。还有更好的方案吗?
--------------------------------------------------------------------
plst 2005-12-29
  • 打赏
  • 举报
回复
99175776(99175776):Microsoft Masked Edit Control 6.0 也不实现实时效果。
虽然还没解决问题,但已经学到了不少东西。
99175776 2005-12-29
  • 打赏
  • 举报
回复
引用Microsoft Masked Edit Control 6.0

用这个控件MaskEdBox1,可实现你想要的功能。
属性中选择第一项,这是对现金的,
第三项为千分分割符,但会对小数进行舍弃操作。

plst 2005-12-28
  • 打赏
  • 举报
回复
northwolves(狼行天下)的方案最接近了,但还不完美。还有更好的方案吗?
射天狼 2005-12-28
  • 打赏
  • 举报
回复
Private Sub Text1_Change()
Text1.Text = Format(Text1.Text, "#,##0")
Text1.SelStart = Len(Text1.Text)
End Sub

==========================
免费的学习、交流、源码、工具下载网站,欢迎大家访问!
http://www.j2soft.cn/
northwolves 2005-12-28
  • 打赏
  • 举报
回复
Private Sub text1_change()
If InStr(Text1.Text, ".") > 0 Then
Else
Text1.Text = Format(Text1.Text, "#,##0")
End If
SendKeys "{end}"
End Sub
xayzmb 2005-12-28
  • 打赏
  • 举报
回复
Text1.Text = Format(Text1.Text, "#,##0.00")
xayzmb 2005-12-28
  • 打赏
  • 举报
回复
text1.text = format(text1.text,'#,##0.00')
cardbeen 2005-12-28
  • 打赏
  • 举报
回复
顶这个问题,并没有完全解决
plst 2005-12-28
  • 打赏
  • 举报
回复
不行啊。一出现三位插入逗号的时候,当前输入光标的位置就不对了。
ljk02079 2005-12-28
  • 打赏
  • 举报
回复
高人呀
又学一招
谢谢了Leftie兄
饮水需思源 2005-12-28
  • 打赏
  • 举报
回复
private sub text1_change()
if text1.text<>"" then
if isnumeric(text1.text) then
text1.text=format(text1.text,"standard")
end if
end if
end sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧