Я хочу получить события, которые закрывают окно редактора (вкладка) в IDE Visual Studio 2008. Когда я использую dte2. Приложение. События get_CommandEvents (пустой указатель, 0).BeforeExecute я успешно получил такие события:
Если код в окне не приемлем, я останавливаю событие (CancelDefault = верный).
Но если я нажимаю кнопку "X" на правой стороне, "Сохраните Изменения"; диалоговое окно появляется, вкладка с окном редактора близко, и у меня нет полученных событий. В этом случае я могу получить событие WindowClosing, но не могу отменить событие.
Это - poosible для обработки "x" нажатия кнопки и события остановки?
Если вы хотите использовать некоторый код Windows API, вы можете настроить ловушку с помощью функции SetWindowsHookEx
для перехвата WM_CLOSE
, WM_QUIT
и WM_DESTROY
.
В C # это будет примерно так: вы добавляете обработчик события Closing, а затем
void MyWindow_Closing(object sender, CancelEventArgs e)
{
if(something)
e.Cancel = true; //<- thats the magic part you want
}
Я бы посоветовал проверить линии обработки событий окна MDI Child!!
Вкладка редактора, на которую вы ссылаетесь, в основном является экземпляром дочернего окна MDI.
Надеюсь, это поможет!