2009-12-25 5 views
2

У меня есть приложение Windows Forms, которое открывает консоль с использованием AllocConsole. Он работает нормально, но проблема заключается в том, что когда я закрываю консоль, нажав кнопку «X», все приложение тоже выходит, но я хочу, чтобы только окно консоли закрывалось, и приложение должно продолжаться, как обычно. Есть ли способ сделать это?.NET: Windows Forms + Console/Prevent closed

ответ

2

Существует способ программного скрыть выделенное вами окно - использовать FreeConsole.

Кнопка X на консоли alloc'd работает как кнопка X на вашем WinForm - она ​​будет щекотать событие Form_Closing(), которое я предполагаю.

Вам понадобится некоторая логика в этом обработчике событий, чтобы решить, действительно ли закрыть форму или нет. Одна возможность: захватить позицию мыши и посмотреть, находится ли она в ограничивающей рамке для Формы. Если это так, то сделайте вывод, что нажата кнопка X формы, и закройте приложение. Если мышь НЕ находится в форме, тогда сделайте вывод, что нажата консоль X, и вызовите FreeConsole.

Я еще не пробовал.

+0

Не работает. Событие Form_Closing не запускается консольным окном. Я также пробовал событие Application.ApplicationExit, но это событие невозможно отменить. – raphaelr

+1

Что вы действительно хотите делать, во всяком случае? Консоль, которую можно открыть таким образом, довольно рудиментарна, я всегда думал, что она в основном полезна для диагностики или отладки. Это действительно то, что вы хотите открыть в пользовательском интерфейсе вашего приложения? – Cheeso

Смежные вопросы