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.   

    在text1中的changetext事件中判断。
    不符合发出警告,再清空。
    小数点用format函数啊。
      

  2.   


      在Change事件中判断不好:因为你每按一个字符,它都会被触发。我还没有输入完毕,你凭什么说“合法”或“不合法”呢?
      应该在textBox的Validate事件中进行判断。
      

  3.   

    '添加 Option1(0) Option1(1) Option1(2)  Text1Dim MachineNo%
    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
      

  4.   

    我主要是想解决如下几方面的问题:
         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
      

  5.   

    Private Sub Text1_LostFocus()
       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
      

  6.   

    我第一次用VB编写上位机,对VB不太熟悉。
     太感谢cbm666了,我试试。