捕获窗口关闭事件

时间:2009-09-03 13:27:19

标签: c# window visual-studio-addins envdte

我想在Visual Studio 2008 IDE中捕获关闭编辑器窗口(选项卡)的事件。 我用的时候 dte2.Application.Events.get_CommandEvents(null,0).BeforeExecute 我成功地抓住了这样的事件:

  • File.Close
  • File.CloseAllButThis
  • File.Exit
  • Window.CloseDocumentWindow 和别的。

如果窗口中的代码不可接受,我会停止该事件(CancelDefault = true)。

但如果我点击右侧的“X”按钮,“保存更改”;出现对话框,选项卡用 编辑器窗口关闭,我没有任何捕获的事件。在这种情况下,我可以捕获WindowClosing事件, 但无法取消活动。

处理“x”按钮点击和停止事件是否合理?

3 个答案:

答案 0 :(得分:1)

在C#中它将是这样的:你添加Closing事件处理程序然后

void MyWindow_Closing(object sender, CancelEventArgs e)
        {
          if(something)
                e.Cancel = true;   //<- thats the magic part you want
}

答案 1 :(得分:0)

如果您愿意使用某些Windows API代码,则可以使用SetWindowsHookEx功能设置一个钩子来截取WM_CLOSEWM_QUITWM_DESTROY

答案 2 :(得分:0)

我建议,检查处理MDI Child窗口事件的行!!

您所引用的编辑器选项卡基本上是MDI子窗口的实例。

希望这有帮助!