1

WindowEvents_WindowActivatedVisual 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イベントが2回発生している可能性があります。これは通常、別のプロセスがアクティブ化されたウィンドウから別のアドインなどのフォーカスを盗み、ウィンドウが再度アクティブ化されたときに発生します。WindowActivatedイベント内にMsgBox呼び出しを追加することにより、発生している動作を複製できます。

RichieHindleによる編集:本当の答えはコメントに埋もれています:「これをアドインで試しましたか?」アドインでは正常に機能します。

于 2009-08-31T23:49:20.527 に答える