我的情况类似于以下简化说明:
带有TextBox(称为 txtQty )的表单,用户可以在其中输入整数。事件 txtQty_Validate 用于验证用户输入并强制他们在更改焦点之前更正任何错误。除了上述 txtQty 之外,这适用于表单上的所有其他控件。我认为这是因为表单上的取消按钮的属性 CausesValidation 必须设置为false;因此,当用户从 txtQty 标签到取消按钮(其 TabIndex 是下一个)时,它无法正确触发 txtQty_Validation 事件。
我的第一直觉是简单地转到 txtQty_KeyPress 事件(我已经用它来使 RETURN 键表现为 TAB 键)并捕获 TAB 键并暂时切换 CausesValidation 属性以允许触发 txtQty_Validation 事件。但是,似乎捕获 TAB 键并不像我想象的那么容易。
有什么建议吗?我认为这不是第一次创建表单的人遇到过这种情况。
由于
答案 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