在输入"."的时候,我原来是这样写的:
If KeyAscii = Asc(".") Then
If InStr(dx.Text, ".") > 0 Then
If InStr(dx.SelText, ".") = 0 Then
KeyAscii = 0
End If
End If
Exit Sub
End If
这个方法就是如果有"."就不能再输"."了
按楼上的办法好像不能达到要求!
有没有人帮帮我呀?
在输入"."的时候,我原来是这样写的:
If KeyAscii = Asc(".") Then
If InStr(dx.Text, ".") > 0 Then
If InStr(dx.SelText, ".") = 0 Then
KeyAscii = 0
End If
End If
Exit Sub
End If
这个方法就是如果有"."就不能再输"."了
按楼上的办法好像不能达到要求!
你不是要在输入点之后改后面的数字吗?现在我都搞不懂你要做什么了!
那段代码的意思是:如果文本框里有"."的话,"."就输不进去,但是如果"."是选中的话,那么就改写原来的"."。
但是我现在的要求是:文本框的默认值为0.00,在光标停在第一个0前输入数字的话,改写"."前面的0,当用户输入"."之后,光标停在"."后面,用户继续输入数字的话,改写"."后面的0,以此类推!
如:现在光标停在第一个0前,用户输1的话,那么效果就是1.00,光标停在1后"."前,用户输12的话,那么效果就是12.00,光标停在2后"."前;用户输入"."后,光标停在"."后,如用户输入3,那么效果就是12.30,光标停在3后0前,紧接用户输入4,那么效果就是12.34,光标停在4后
具体就是这个意思!希望大家能帮帮忙!
请版主帮帮我呀!我很急呀!谢谢啦!
Option Explicit
Private Sub Form_Load()
Text1.Text = "0.00"
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim I As Long, K As Long, STR1() As Byte
I = Text1.SelStart
STR1 = Text1.Text
If I * 2 > UBound(STR1) Then Exit Sub
If STR1(I * 2) = 48 Then
STR1(I * 2) = KeyAscii
Text1.Text = STR1
KeyAscii = 0
Text1.SelStart = I + 1
ElseIf KeyAscii = 46 Then
I = InStr(Text1.Text, ".")
If I Then
Text1.SelStart = I
KeyAscii = 0
End If
End If
End Sub
'注:这段程序只是基本实现了功能,但未做任何错误处理,所以在实际应用中要加上错误处理,请自行添加。
[此贴子已经被作者于2007-6-14 12:03:20编辑过]