Форма входа не теряет фокус - PullRequest
6 голосов
/ 19 ноября 2011

У меня есть система, в которой основной формой является меню, и при загрузке выскакивает форма входа в систему.Первоначально он загружал форму входа под меню, поэтому я использовал this.topmost = true, чтобы сделать его первым.(так как перенос на передний план и отправка на задний план не сработали)

Однако, если пользователь затем нажимает на что-то еще, скажем, на хром, то он по-прежнему остается на вершине z-порядка по определению topmost.

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

Как я могу остановить загрузку за формой моего меню, и все же, когда оно теряет фокус, не дать ему стать верхним?

private void login_Deactivate(object sender, EventArgs e)
{
     // do not want it to remain top most when the application is not in focus.
     this.TopMost = false;
}

В форме меню:

private void Menu_Load(object sender, EventArgs e)
{
     openLogin()
}

private void openLogin()
{
     Cursor.Current = Cursors.WaitCursor;
     login theForm = new login(this);            
     this.Enabled = false;            
     theForm.Show();
     Cursor.Current = Cursors.Default;
     theForm.Activate(); 
     theForm.TopMost = true; // Make the login form display over the Menu    
}          

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Попробуйте установить форму логина Владелец свойство для формы меню.

Сверху ссылка MSDN:

Когда форма принадлежит другой форме, оназакрыто или скрыто с формой владельца.... Собственные формы также никогда не отображаются за формой их владельца .Для окон можно использовать собственные формы, такие как окна поиска и замены, которые не должны исчезать при выборе формы владельца.Чтобы определить формы, принадлежащие родительской форме, используйте свойство OwnedForms

.

0 голосов
/ 19 ноября 2011

Предполагая, что это приложение Win Forms, попробуйте изменить theForm.Show() на theForm.ShowModal()

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