Окно теряет фокус - PullRequest
       7

Окно теряет фокус

1 голос
/ 09 марта 2011

В моем приложении, когда я показываю окно сообщения и пользователь нажимает любую из его кнопок, например, OK или ОТМЕНА, мое окно теряет фокус и сворачивается.

Я должен был попытаться использовать set focus, а также использовать win32 API SetForegroundWindow (window hWnd), чтобы окно оставалось активным. Я заметил, что если за моим окном открыто другое приложение, окно моего приложения теряет фокус после нажатия кнопки окна сообщения, но если это единственное видимое окно на рабочем столе, оно работает нормально. Я работаю на Windows 7, но сталкиваюсь с той же проблемой в Win XP.

Я использую GradientForm. И чтобы показать окно сообщения, я использую MessageBox.Show («Текст сообщения», «», MessageBoxButtons.OK, MessageBoxIcon). Ничего особенного.

Ответы [ 3 ]

4 голосов
/ 09 марта 2011

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

Убедитесь, что вы не отключили свои окна. Другими словами, избегайте этого:

   this.Enabled = false;
   MessageBox.Show("oops");
   this.Enabled = true;

Настройка включена обратно в истину, как будто это слишком поздно.

0 голосов
/ 24 марта 2017

Убедитесь, что вы не показываете окно сообщения в событии загрузки формы.Потому что в то время окно еще не инициализировано.

Вместо этого используйте показанное событие формы.Это решит эту проблему

0 голосов
/ 12 марта 2011

Я решил проблему, активировав окно с помощью setForgroundwindow() перед отображением диалогового окна, и теперь все работает нормально.

...