2010-07-28 13 views
5

Tengo una aplicación C# .net. Así que creé un notifyIcon que se encuentra en la bandeja. Lo que quiero hacer es cuando el usuario presione el botón "x" en el formulario, quiero que se cierre a la bandeja. Solo deberían poder salir del programa utilizando el menú contextual en el icono de la bandeja.C# cerca de la bandeja (como msn messenger)

Así que lo que hice fue, en el evento close del formulario, verifico si el formulario está visible. Si está visible, lo configuro como invisible y establezco showInTaskbar en falso (simulando minimizar en la bandeja) Si el formulario ya es invisible, probablemente lo estén cerrando de la bandeja, por lo que saldré del programa en ese caso.

Sin embargo, el problema que tengo es que si la ventana está visible, pero hacen clic derecho en el menú contextual del ícono de la bandeja y presionan exit, necesito salir del programa y no minimizar.

¿Cómo resuelvo este problema?

+0

Application.exit() no funcionará porque todavía desencadena el evento de cierre de formulario. Creo que, como algunas personas han mencionado, tendré que usar una bandera para indicar de dónde viene la solicitud (menú de la bandeja en vez del botón x) –

Respuesta

3

probar esto:

bool _closingFromMenu; 

void NOTIFYICON_EXIT_MENU_HANDLER(object sender, EventArgs e) 
{ 
    _closingFromMenu = true; 
    Close(); 
} 

//form closing handler 
FormClosing +=(a,b) =>{ 
    if(_closingFromMenu){ 
     Close(); 
    } 
    else{ 
     e.Cancel = true; 
     //do minimize stuff; 
    } 
} 

o si tiene una sola forma puede llamar Application.Exit(); en contexto de control de elemento de menú

0

Es probable que desee rastrear el estado de la aplicación en función de las acciones del usuario, ya que eso no se refleja necesariamente en el estado de la ventana. Entonces, cuando el usuario selecciona Salir del menú, debe establecer una bandera para indicar que realmente está saliendo, no solo ocultando la ventana.

0

Simplemente haga su Contexto Menú estrecha evento de llamada Application.Exit()

Cuestiones relacionadas