2011-11-19 16 views
6

Tengo un sistema en el que la forma principal es el menú, y aparece un formulario de acceso en el cargamento. Originalmente se carga el formulario de usuario abajo el menú, así que utiliza this.topmost = true para hacer que viene en la parte delantera. (como traer al frente y enviar hacia atrás no funcionó)Formulario de acceso no perder el foco correctamente

Sin embargo, si el usuario hace clic en algo más, por ejemplo, en cromo, sigue estando en la parte superior del orden z, por definición de más arriba.

Intenté utilizar el evento de desactivación, pero esto significaba que al cargarlo nuevamente aparece detrás del formulario del menú.

¿Cómo puedo evitar que se cargue detrás de mi formulario de menú y, sin embargo, cuando pierde el foco, deja de ser el más alto?

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; 
} 

En el formulario Menú:

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  
}   

Respuesta

2

intente configurar de sesión propiedad Formulario Owner a la forma de menú.

Desde arriba enlace de MSDN:

Cuando un formulario es propiedad de otra forma, se cierra o escondida con la forma propietario. ... formas en propiedad se encuentran también nunca se muestran detrás de su forma propietario. Puede usar formularios propios para ventanas como find y reemplazar ventanas, que no deberían desaparecer cuando el formulario de propietario es seleccionado. Para determinar los formularios que son propiedad de un formulario primario, use la propiedad OwnedForms

.

+0

Gracias mucho, trabajó al instante! Cheers –

+0

Me alegro de ser de ayuda. –

0

Suponiendo que esta es una victoria formularios de solicitud, a continuación, intente cambiar a theForm.Show()theForm.ShowModal()

Cuestiones relacionadas