Почему скрывается собственное окно переключателей в WinForms (.NET)? - PullRequest
3 голосов
/ 02 марта 2010

У меня есть окно приложения, которое закрывает экран, и есть несколько второстепенных окон инструментов, которые по умолчанию скрыты, и их свойства «Владелец» установлены в этом главном окне.

Когда я показываю окно инструмента и нажимаю одну из его кнопок, оно прячется, чтобы показать другое окно.Когда я скрываю это окно другого инструмента, Windows переключает приложение так же, как когда вы нажимаете Alt + Tab.Единственный способ предотвратить это - щелкнуть в главном окне приложения перед закрытием (скрытием) окна инструмента.

Почему происходит переключение приложения и как это предотвратить?Что ж, я могу явно указать этим окнам, что главное окно должно быть спрятано (я еще не пробовал, но мне это не нравится). Это происходит, только если для этих окон установлено свойство Owner, чтобы предотвратитьих показ за основным окном.

ps: это полноэкранное приложение - игра, а эти окна - меню и экраны настроек и т. д. *

1 Ответ

1 голос
/ 02 марта 2010

Мрачная проблема, я не могу воспроизвести и не слышал об этом раньше. Это нормальное поведение, когда оконный менеджер Windows вынужден искать другое окно, чтобы сосредоточиться на том, когда закрывается текущее окно. И в приложении не осталось ни одного активного окна. Это не должно иметь место в вашем приложении, если вы намеренно не установите свойство Enable главного окна в False, если окно инструмента получает фокус. Запуск окон в разных потоках - это длинное объяснение.

Следует попробовать установить для свойства ShowInTaskbar окна инструмента значение false, поэтому пользователь всегда должен пройти через главное окно, чтобы перефокусировать приложение. И чтобы убедиться, что окно закрывается только из-за события MouseUp, чтобы захват мыши не мог испортить ситуацию. И, да, явно фокусировать главное окно в событии FormClosing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...