Событие закрытия окна захвата
Я хочу захватить события, закрывающие окно редактора (вкладку) в среде 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" нажатие кнопки и остановку события?
Ответы
Ответ 1
В С# это будет примерно так: вы добавляете обработчик закрывающего события, а затем
void MyWindow_Closing(object sender, CancelEventArgs e)
{
if(something)
e.Cancel = true; //<- thats the magic part you want
}
Ответ 2
Если вы хотите использовать некоторый код Windows API, вы можете настроить крючок с помощью функции SetWindowsHookEx
для перехвата WM_CLOSE
, WM_QUIT
и WM_DESTROY
.
Ответ 3
Я бы предложил, проверьте линии обработки событий окна MDI Child!
Вкладка редактора, к которой вы обращаетесь, в основном представляет собой экземпляр окна MDI Child.
Надеюсь, это поможет!