13

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

  • 文件.关闭
  • File.CloseAllButThis
  • 文件.退出
  • Window.CloseDocumentWindow 等。

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

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

处理“x”按钮单击和停止事件是否可行?

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_CLOSE和.WM_QUITWM_DESTROY

于 2010-04-01T09:45:47.787 回答