VB中同一个文本框txt1当选择不同的设备时,其最小值、最大值及小数点位数都不同。
1.当选择设备1时,最小值0.0 最大值100.0,带1位小数点
用户输入3.04,该如何检测
2.当选择设备2时,最小值1.00 最大值200.00,带2位小数点
用户输入3.4,该如何检测
3.当选择设备3时,最小值2 最大值300,无小数点
用户输入3.4,该如何检测
1.当选择设备1时,最小值0.0 最大值100.0,带1位小数点
用户输入3.04,该如何检测
2.当选择设备2时,最小值1.00 最大值200.00,带2位小数点
用户输入3.4,该如何检测
3.当选择设备3时,最小值2 最大值300,无小数点
用户输入3.4,该如何检测
不符合发出警告,再清空。
小数点用format函数啊。
在Change事件中判断不好:因为你每按一个字符,它都会被触发。我还没有输入完毕,你凭什么说“合法”或“不合法”呢?
应该在textBox的Validate事件中进行判断。
Private Sub Form_Load()
Option1(0).Value = True
End SubPrivate Sub Option1_Click(Index As Integer)
MachineNo = Index
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Select Case MachineNo
Case 0 '设备1
If Val(Text1.Text) < 0 Or Val(Text1.Text) > 100 Then MsgBox "请输入区间数字": Exit Sub
jj = InStrRev(Text1.Text, ".")
If jj = 0 Then
Text1.Text = Format(Text1.Text, "0.0")
Else
If Len(Text1.Text) - jj <> 1 Then MsgBox "只能小数点1位"
End If
'If jj = 0 Or Len(Text1.Text) - jj <> 1 Then MsgBox "只能小数点1位"
Case 1 '设备2
If Val(Text1.Text) < 1 Or Val(Text1.Text) > 200 Then MsgBox "请输入区间数字": Exit Sub
jj = InStrRev(Text1.Text, ".")
If jj = 0 Then
Text1.Text = Format(Text1.Text, "0.00")
Else
If Len(Text1.Text) - jj <> 2 Then MsgBox "只能小数点2位"
End If
'If jj=0 or Len(Text1.Text) - jj <> 2 Then MsgBox "只能小数点2位"
Case 2 '设备3
If Val(Text1.Text) < 2 Or Val(Text1.Text) > 300 Then MsgBox "请输入区间数字": Exit Sub
jj = InStrRev(Text1.Text, ".")
If jj > 0 Then MsgBox "不能含小数点"
End Select
End If
End Sub
1.当最小值0.0 最大值100.0,带1位小数点
(a)当用户输入3.04,失去焦点或者按键回车键时
会自动将"3.04"最后一位数字"4"舍去,只保留"3.0",同时内部存储值为30
(b)当用户输入3.2,失去焦点或者按键回车键时,内部存储值为32
(c)当用户输入2,失去焦点或者按键回车键时,内部存储值为20
(d)当用户输入.5,失去焦点或者按键回车键时,内部存储值为5
If Val(Text1.Text) >= 0 And Val(Text1.Text) <= 100 Then
Text1.Text = CStr(Format(Val(Text1.Text), "0.0") * 10)
End If
End Sub
太感谢cbm666了,我试试。