我想自己写个TEXTBOX用户控件,实现人民币输入格式(高分求教)需要思路,有代码更好

斗斗来三 2003-07-30 07:31:41
例如可以接受数字,退格,回车等按钮时间,固定格式为¥0.00,有什么好的思路吗?
...全文
146 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobdai 2003-08-01
  • 打赏
  • 举报
回复
直接用MaskedEdit控件不就行了吗?
Latitude 2003-08-01
  • 打赏
  • 举报
回复
1.当值为空时,显示¥0.00并不难呀,初始值设为这个,然后在textbox的textchanged事件中写
if textbox1.text="" then
textbox1.text="¥0.00"
end if
但是也还是需要规划一下。判断一下text中只能有一个"."如果有一个,则不能再输入"."等细节问题。
2.你的Userctl,不能取text值,也不能赋值的问题这样来试试:
  private tempText as string
Property SGText( ) As string
Get
Return tempText
End Get
Set(ByVal Value As string)
tempText = Value
End Set
End Property
然后在textbox的textchanged事件中:
   me.SGtext=textbox1.text
然后在外部你也可以用这个属性来读值,但不要赋值。
我只是一时想到就写了,你如果只是想在外部读到textbox1的text值,最简单的方法就是把textbox1的修饰符变为public即可,默认的是friend。
  但规范的方法应该是通过属性来做。

                by Henry
sindyzhou 2003-08-01
  • 打赏
  • 举报
回复
另外:应该是Inherit system.windows.forms.textbox
而不是:inherit system.windows.forms.usercontrol
Vb_Net4Zeng 2003-08-01
  • 打赏
  • 举报
回复
to: Latitude(Henry)
还有个问题一起看看吧 :) ,谢谢
http://expert.csdn.net/Expert/topic/1789/1789991.xml?temp=.9463312
dzq_1 2003-08-01
  • 打赏
  • 举报
回复
你考虑用正则表达式对文本框进行限制,作一个自定义控件。
看一下msdn帮助(.net 2002下的):
ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconcomregularexpressions.htm
sindyzhou 2003-08-01
  • 打赏
  • 举报
回复
在Leave事件里加入:

if not isnumeric(textbox1.text) then
textbox1.text = "¥0.00"
else
textbox1.text = "¥" & format(textbox1.text,"#,##0.00")
end if
Vb_Net4Zeng 2003-08-01
  • 打赏
  • 举报
回复
这个我做过的,我是派生的TEXTBOX,用于“凭证”的金额输入。
to: Latitude(Henry) 老大可以帮个忙吗?帮我解决一个问题好吗?谢谢
http://expert.csdn.net/Expert/topic/2056/2056853.xml?temp=.159527
斗斗来三 2003-08-01
  • 打赏
  • 举报
回复
帮忙啊,问题还没解决呢
斗斗来三 2003-08-01
  • 打赏
  • 举报
回复
大家顺便推荐一下VB。NET的好书,主要用来开发桌面应用程序的,需要讲的深,讲的透,但是看的懂,不要推荐一本天书啊
斗斗来三 2003-08-01
  • 打赏
  • 举报
回复
我看了一下MASKEDEDIT控件不错,只是不知道改怎么定义他的MASK属性,我尝试了#.##还是不行,而且有一个缺陷就是,输入的数字带下划线,不知道怎么改,那个知道的告诉我一下,不然我只有自己写控件了
zhxylgh 2003-08-01
  • 打赏
  • 举报
回复
zz
斗斗来三 2003-07-30
  • 打赏
  • 举报
回复
你是Latitude(Henry) ,呵呵,久仰,拜读过您的
Henry手记:WinForm Datagrid结构剖析(二)
Henry手记 - Datagrid键盘事件响应(一)
等,受益非浅,也抄了您一些代码,嘿嘿
现在有2大难题,1是固定格式的问题,当值为空时,必须显示¥0.00
2是,我自己创建的USERCTL,不能把TEXT值取回,也不能赋值,有待研究
能不能给点思路,谢谢
Latitude 2003-07-30
  • 打赏
  • 举报
回复
做个抛砖引玉吧,只处理了数值框与¥ 的处理,没有处理0.00的格式:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (IsNumeric(e.KeyChar) Or e.KeyChar = ChrW(8) Or e.KeyChar = ChrW(46)) Then
e.Handled = True
Else
If IsNumeric(e.KeyChar) Then
If Microsoft.VisualBasic.Left(TextBox1.Text, 1) <> "¥" Then
TextBox1.Text = "¥" + TextBox1.Text + e.KeyChar
e.Handled = True
TextBox1.SelectionStart = TextBox1.Text.Length
End If
End If
End If
End Sub

----
by Henry
sindyzhou 2003-07-30
  • 打赏
  • 举报
回复
sendkeys.send("{Tab}")
这样呢
斗斗来三 2003-07-30
  • 打赏
  • 举报
回复
另附: If e.KeyChar = Chr(13) Then
SendKeys.SendWait("{Tab}")
End If
我截获ENTER KEY,发送TAB KEY
为什么系统会发出叮的一声,而直接用TAB则不会

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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