2017-01-25 40 views
0

今天我偶然发现LostFocus事件中的TextBox事件没有触发问题。大多数客户没有任何问题,但其中一小部分报告出乎意料的行为。经过一番研究后,我发现没有出现问题的客户用鼠标点击“确定”按钮,而其他客户端在其键盘上按下Enter。 “Ok”按钮是Form上的默认按钮,因此按Enter应该可以正常工作。问题是按下Enter不会触发焦点文本框上的LostFocus事件。使用默认按钮时,文本框lostfocus事件不会触发

经过一番谷歌搜索后,很明显,这是默认按钮的预期行为。重点不会丢失TextBox,并且不会点击它,而是在运行事件的代码背后的代码。

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

回答

0

一个简单的黑客工作对我来说,只要将Click事件触发时,将焦点设置为“Ok”按钮。这样当前的控件就会自动运行它的LostFocus事件。设置焦点后别忘了放置额外的DoEvents。否则,LostFocus事件在您的其他代码执行后触发。

Private Sub cmdOk_Click() 
    cmdOK.SetFocus 
    DoEvents 
    'Run your other code 
End Sub