Как предотвратить потерю фокуса WinForms? - PullRequest
4 голосов
/ 14 июля 2011

Как предотвратить потерю фокуса моей «формой» (без полей ввода, только кнопка «ОК»), чтобы пользователь нажимал «ОК»? Я пробовал Валидацию и ErrorProvider. Я также попытался делегировать Show, Activate и Focus следующим образом:

AboutForm myAboutForm = new AboutForm();
myAboutForm.Deactivate += delegate { myAboutForm.Show(); myAboutForm.Activate(); };
myAboutForm.Show();

но ничего не работает.

Ответы [ 5 ]

10 голосов
/ 14 июля 2011

Создайте форму в Модальном диалоговом окне.

AboutForm myAboutForm = new AboutForm();
myAboutForm.ShowDialog();

Из MSDN - ShowDialog:

Показывает форму в виде модального диалогового окна.

2 голосов
/ 14 июля 2011

Показать форму в виде модального диалога:

myAboutForm.ShowDialog();

2 голосов
/ 14 июля 2011

Вы должны определить свою форму прерывания как модальный . Модальное окно (за Википедия ):

В дизайне пользовательского интерфейса модальное окно - это дочернее окно, которое требует от пользователей взаимодействия с ним, прежде чем они смогут вернуться к работе родительское приложение, тем самым предотвращая рабочий процесс на главное окно приложения. Модальные окна часто называют тяжелыми или модальные диалоги, потому что окно часто используется для отображения диалога коробка.

Например,

myAboutForm.ShowDialog(); вместо myAboutForm.Show(); так:

AboutForm myAboutForm = new AboutForm();
myAboutForm.ShowDialog();

Подробнее на MSDN по отображению модальных и немодальных окон ,

Модальная форма или диалоговое окно должны быть закрыты или скрыты, прежде чем вы сможете продолжить работу с остальной частью приложения.

Наконец, я не уверен, что Деактивировать работает так, как вы думаете, для MSDN:

Происходит, когда форма теряет фокус и перестает быть активной формой.

и

Вы можете использовать это событие для выполнения таких задач, как обновление другого окно в вашем приложении с данными из деактивированной формы.

1 голос
/ 14 июля 2011

В Windows рабочий стол имеет наивысший приоритет.Вы не можете заблокировать доступ пользователей к рабочему столу, если ваше приложение работает.Тем не менее, есть хитрости, чтобы сделать это.Вы просто устанавливаете свойство topmost формы, так что пользователь всегда будет видеть сверху над всеми приложениями.ShowDialog будет держать вашу форму поверх вашего приложения.

0 голосов
/ 14 июля 2011
AboutForm myAboutForm = new AboutForm();
myAboutForm.ShowDialog();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...