1

如果我WindowEvents_WindowActivated向我的 Visual Studio 2005 宏EnvironmentEvents模块添加一个处理程序,我会得到一个奇怪的副作用:当我在 Visual Studio 中从一个窗口单击到另一个窗口时,该单击被视为双击。

例如,我将焦点放在编辑器窗口中,然后在解决方案资源管理器中单击一个文件,该文件就会打开。

或者我将焦点放在工具箱中并在编辑器窗口中单击,然后我单击的单词被选中。在大多数情况下,当单击导致窗口激活时,该单击被视为双击。

即使使用空的事件处理程序也会发生这种情况:

Private Sub WindowEvents_WindowActivated(ByVal GotFocus As EnvDTE.Window, _
                                         ByVal LostFocus As EnvDTE.Window) _
                                         Handles WindowEvents.WindowActivated
    ' Do nothing.
End Sub

我想用这个WindowActivated事件做一些很酷的事情,但这是一个杀手。有没有人见过这个并解决它?(我知道我可以使用计时器并轮询当前窗口,但是很糟糕。)

4

1 回答 1

2

我没有这个问题。WindowActivated 事件很可能被触发了两次。这通常发生在另一个进程从激活的窗口中窃取焦点(例如另一个加载项)然后重新激活该窗口时。您可以通过在 WindowActivated 事件中添加 MsgBox 调用来复制您遇到的行为。

RichieHindle 编辑:真正的答案隐藏在评论中:“你在加载项中尝试过这个吗?” 它在加载项中运行良好。

于 2009-08-31T23:49:20.527 回答