0

我是 Visual Basic 6 的新手,所以请耐心等待(并彻底回答您的问题)。

我正在构建一个表单,我需要检查在其中一个字段中输入的信息是否是数字,否则程序必须发出哔哔声。

该字段是控件数组的一部分,名为 txtMyField(0)

我写的代码中的最后一件事:

Private Sub txtMyField_Change(Index As Integer)
If Not IsNumeric(txtMyField(0).Text) Then
    Beep
End If
End Sub

我不知道这段代码是否正确,我也不知道如何调用 Sub 来使用它,以便在插入数据库之前检查字段的值。

非常感谢你的帮助!

4

2 回答 2

2

您可以使用 Validate 事件来执行此操作。您需要确保 CausesValidation 属性为真,如果是,则将为该控件引发 Validate 事件。

您的活动可能如下所示:

Private Sub txtMyField_Validate(Index As Integer, Cancel As Boolean)
    If Not IsNumeric(txtMyField(Index).Text) Then
        Beep
        Cancel = True
    End If
End Sub

这将确保控件数组中的所有控件都是数字的(假设它们的 CausesValidation 属性在启动时设置为 True)。如果其中一个控件为空或包含非数字字符,则当控件失去焦点时会发出哔声。

注意这里的一些事情

  • 发出哔声并不是指示验证错误的好方法。表单中显示错误的消息框或文本框通常是更好的方法。用户可能听不到您的哔声,或者可能不理解“哔声”的意思是“您需要在此字段中提供一个数字”。
  • 您的代码引用了 index = 0 的控件。该事件可能会针对控件数组中的任何控件触发,因此在您应该验证 control(5) 时检查 control(0) 的值并不是真正合乎逻辑的事情(例如)。
于 2013-01-25T15:11:31.853 回答
1

而不是哔哔声,你也可以让你的texbox只接受某些键

例如一个只接受数字键和退格键的文本框:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  KeyAscii = NrOnly(KeyAscii)
End Sub

Private Function NrOnly(intKey As Integer)
  Dim intReturn As Integer
  intReturn = intKey
  Select Case intKey
    Case vbKeyBack
    Case vbKey0 To vbKey9
    Case Else
      intReturn = 0
  End Select
  NrOnly = intReturn
End Function

您可以为 NrOnly 函数添加更多智能以允许更多键,或检查某些边界

不过要小心,因为用户仍然可以使用鼠标通过复制和粘贴来输入其他数据

于 2013-01-29T14:57:35.683 回答