У меня есть система, в которой основной формой является меню, и появляется всплывающая форма входа при загрузке. Изначально он загружал форму входа под меню, поэтому я использовал 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
}