使用默认按钮时,文本框lostfocus事件不会触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用默认按钮时,文本框lostfocus事件不会触发相关的知识,希望对你有一定的参考价值。
今天我偶然发现一个LostFocus
事件的问题来自没有开火的TextBox
。大多数客户没有任何问题,但其中一小部分报告了意外行为。经过一些研究后,我发现没有问题的客户用鼠标点击“确定”按钮,而其他客户在键盘上按下Enter
。 “确定”按钮是表单上的默认按钮,因此按下Enter
应该可以正常工作。问题是按下Enter
不会在焦点上触发TextBox上的LostFocus
事件。
经过一些谷歌搜索后,很明显这是默认按钮的预期行为。焦点永远不会失去TextBox
和CommandButton
Click
事件背后的代码正在运行而没有被点击。
如何在使用默认按钮时触发LostFocus
事件?
答案
一个对我有用的简单黑客是每当Click
事件被触发时将焦点设置为“Ok”按钮。这样,当前控件自动运行其LostFocus
事件。设置焦点后,不要忘记添加额外的DoEvents
。否则,在执行其他代码后,LostFocus
事件将触发。
Private Sub cmdOk_Click()
cmdOK.SetFocus
DoEvents
'Run your other code
End Sub
以上是关于使用默认按钮时,文本框lostfocus事件不会触发的主要内容,如果未能解决你的问题,请参考以下文章
需要将多个文本框的TextBox_LostFocus的重复代码缩减为一个函数