当使用CausesValidation = False选项卡到Cancel按钮时,VB6 _Validation事件不会触发

时间:2016-06-14 13:30:09

标签: vb6

我的情况类似于以下简化说明:

带有TextBox(称为 txtQty )的表单,用户可以在其中输入整数。事件 txtQty_Validate 用于验证用户输入并强制他们在更改焦点之前更正任何错误。除了上述 txtQty 之外,这适用于表单上的所有其他控件。我认为这是因为表单上的取消按钮的属性 CausesValidation 必须设置为false;因此,当用户从 txtQty 标签到取消按钮(其 TabIndex 是下一个)时,它无法正确触发 txtQty_Validation 事件。

我的第一直觉是简单地转到 txtQty_KeyPress 事件(我已经用它来使 RETURN 键表现为 TAB 键)并捕获 TAB 键并暂时切换 CausesValidation 属性以允许触发 txtQty_Validation 事件。但是,似乎捕获 TAB 键并不像我想象的那么容易。

有什么建议吗?我认为这不是第一次创建表单的人遇到过这种情况。

由于

1 个答案:

答案 0 :(得分:1)

您可以在取消GotFocus事件中尝试此操作。

Dim b As Boolean

Call txtQty_Validate(b)
If b Then txtQty.SetFocus

假设你有类似的东西

Private Sub txtQty_Validate(Cancel As Boolean)
    If Not IsNumeric(txtQty.Text) Then
        Cancel = True
    End If
End Sub