我想在textbox内输入数字后自动变成金额形式,比如输入1000,textbox自动显示成1,000.00,我用的是
Private Sub Text1_Change()
Text1.Text = Format(Text1.Text, "##,##0.00")
End Sub
但是这个时候在输入数字的话,textbox的光标跑到1前面了,本来我想输入的是10,002.00,可是显示的却是:21,000.00,怎么能让光标一直保持在原来输入的地方呢?

解决方案 »

  1.   

    本帖最后由 bcrun 于 2011-03-05 13:02:38 编辑
      

  2.   

    Ctrl+T里面找Microsoft Masked Edit Control
      

  3.   

    本帖最后由 bcrun 于 2011-03-05 13:03:04 编辑
      

  4.   

    这个虽然可以,但是不能解决用户用插入的方式,在.前面若干位置输入的问题。
    我也写了个,在各个位置都可以,但是光标前面是“,”的时候,按退格键会没有效果,应该在keypress里面判断,如果是退格键,并且光标前面是“,”,就把文本里面光标前面的一位数字去掉,这个留给LZ去做吧,嘿嘿
    Private Sub Text1_Change()
    Dim val As Double, sval As String
    If Left(Text1.Text, 1) <> "," Then sval = CDbl(Text1.Text) Else sval = CDbl(Right(Text1.Text, Len(Text1.Text) - 1))
    txt = Text1.Text
    selstar = Len(txt) - Text1.SelStart
    If InStr(txt, ".") Then
        If InStr(txt, ",") Then
            txt = Format(sval, "#,###.00")
        Else
            txt = Format(sval, "#,###.00")
        End If
    Else
        txt = Format(sval, "#,###.00")
        selstar = 3
    End IfText1.Text = txt
    If Len(txt) - selstar > 0 Then Text1.SelStart = Len(txt) - selstar Else Text1.SelStart = 0End Sub
      

  5.   

    好像有方法/控件可以实现 windows下输入ip地址的那种特殊文本框,可以参考一下
      

  6.   

    Ctrl+T里面找Microsoft Masked Edit ControlPrivate Sub Form_Load()
     MaskEdBox1.Mask = ("##,##0.00")
    End Sub正解