VB编程中,使用MASKEDIT控件设置我需要的格式显示正确,但当我再次点击控件(控件再次得到焦点得到时候)
例如我在MASKEDIT的属性中设置格式为0000.00000,当我在控件中输入数字23,文本内容就会显示为0023.00000,但是当我再次点击控件的时候(控件得到焦点...
例如我在MASKEDIT的属性中设置格式为0000.00000,当我在控件中输入数字23,文本内容就会显示为0023.00000,但是当我再次点击控件的时候(控件得到焦点的时候)文本的内容又会显示为23,怎么样让它得到焦点的时候还是显示我需要的格式(0023.00000)??望高手指点能不能通过代码来实现这一功能,或者有其他的办法。小弟在这里先谢过了!!!!
展开
1个回答
展开全部
只能是自己用代码来实现了,可以封装成一个用户控件。
以下代码在VB6 里调试通过,只要将它改成一个用户控件就行了。
'定义全局变量
Dim m As Integer
Dim n As Integer
Dim bIsdot As Boolean
'变量置初值
Private Sub Form_Load()
Text1.Text = "0000.00000"
bIsdot = False
m = 0 '计数输入整数部分位数
n = 0 '计数输入小数部分位数
End Sub
'在text的KeyPress事件里处理所有的输入
Private Sub Text1_KeyPress(KeyAscii As Integer)
s = Text1.Text
If KeyAscii = Asc(".") Then bIsdot = True
If KeyAscii >= Asc(0) And KeyAscii <= Asc(9) Then
If bIsdot Then
n = n + 1
If n > 5 Then
MsgBox "输入数据超界"
Else
Text1.Text = Left(s, 4 + n) + Trim(Chr(KeyAscii)) + Right(s, 5 - n)
End If
Else
m = m + 1
If m > 4 Then
MsgBox "输入数据超界"
Else
Text1.Text = Mid(s, 2, 3) + Chr(KeyAscii) + Right(s, 6)
End If
End If
End If
KeyAscii = 0 '清除键盘输入缓冲区
End Sub
以下代码在VB6 里调试通过,只要将它改成一个用户控件就行了。
'定义全局变量
Dim m As Integer
Dim n As Integer
Dim bIsdot As Boolean
'变量置初值
Private Sub Form_Load()
Text1.Text = "0000.00000"
bIsdot = False
m = 0 '计数输入整数部分位数
n = 0 '计数输入小数部分位数
End Sub
'在text的KeyPress事件里处理所有的输入
Private Sub Text1_KeyPress(KeyAscii As Integer)
s = Text1.Text
If KeyAscii = Asc(".") Then bIsdot = True
If KeyAscii >= Asc(0) And KeyAscii <= Asc(9) Then
If bIsdot Then
n = n + 1
If n > 5 Then
MsgBox "输入数据超界"
Else
Text1.Text = Left(s, 4 + n) + Trim(Chr(KeyAscii)) + Right(s, 5 - n)
End If
Else
m = m + 1
If m > 4 Then
MsgBox "输入数据超界"
Else
Text1.Text = Mid(s, 2, 3) + Chr(KeyAscii) + Right(s, 6)
End If
End If
End If
KeyAscii = 0 '清除键盘输入缓冲区
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询