13

Visual Studio 2008 IDE でエディター ウィンドウ (タブ) を閉じるイベントをキャプチャしたいと考えています。dte2.Application.Events.get_CommandEvents(null, 0).BeforeExecute を使用すると、次のようなイベントを正常にキャプチャできました。

  • File.Close
  • File.CloseAllButThis
  • File.Exit
  • Window.CloseDocumentWindow など。

ウィンドウ内のコードが受け入れられない場合は、イベントを停止します (CancelDefault = true)。

しかし、右側の「X」ボタンをクリックすると、「変更を保存」; ダイアログが表示され、エディターウィンドウが閉じたタブが表示され、キャプチャされたイベントはありません。この場合、WindowClosing イベントをキャプチャできますが、イベントをキャンセルすることはできません。

「×」ボタンのクリックと停止イベントを処理することはできますか?

4

3 に答える 3

1

C#では、次のようになります。Closingイベントハンドラーを追加してから、

void MyWindow_Closing(object sender, CancelEventArgs e)
        {
          if(something)
                e.Cancel = true;   //<- thats the magic part you want
}
于 2010-04-04T20:48:01.387 に答える
0

MDI子ウィンドウイベントの処理の行を確認することをお勧めします!!

参照しているエディター タブは、基本的に MDI チャイルド ウィンドウのインスタンスです。

お役に立てれば!

于 2010-04-07T18:06:01.867 に答える
0

いくつかの Windows API コードを使用する場合は、関数を使用してフックを設定して、とSetWindowsHookExをインターセプトできる可能性があります。WM_CLOSEWM_QUITWM_DESTROY

于 2010-04-01T09:45:47.787 に答える