3

今天我偶然发现了一个没有触发的LostFocus事件的问题。TextBox大多数客户没有任何问题,但其中一小部分报告了意外行为。经过一些研究,我发现没有问题的客户使用鼠标单击“确定”按钮,而其他客户则按下Enter键盘。“确定”按钮是表单上的默认按钮,因此按下Enter应该可以正常工作。问题是按下Enter不会LostFocus在具有焦点的 TextBox 上触发事件。

经过一番谷歌搜索,很明显这是默认按钮的预期行为。焦点永远不会丢失,TextBox并且事件背后的代码在CommandButton Click没有被点击的情况下运行。

LostFocus使用默认按钮时如何触发事件?

4

1 回答 1

1

Click一个对我有用的简单技巧是在触发事件时将焦点设置为“确定”按钮。这样当前控件会自动运行它的LostFocus事件。DoEvents设置焦点后不要忘记添加额外内容。否则,LostFocus在您的其他代码执行后触发事件。

Private Sub cmdOk_Click()
    cmdOK.SetFocus
    DoEvents
    'Run your other code
End Sub
于 2017-01-25T09:54:59.200 回答