Форма входа в систему не теряет фокус правильно

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

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

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

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

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    
}          
6
задан competent_tech 19 November 2011 в 19:41
поделиться