Winforms - ¿Por qué un “Show ()” después de una bandeja del sistema, haga doble clic terminan en mi aplicación minimizada?
-
24-09-2019 - |
Pregunta
Winforms -? ¿Por qué un "Show ()" después de una bandeja de sistema de extremo doble clic en mi aplicación minimizada
¿Cómo me aseguro Enla NotifyIcon evento de doble clic que mi principal forma oculta vuelve visible como normal, no es minimizada (ni maximizado para el caso también)
Solución
Me imagino que usted pone su aplicación en la bandeja de minimizar la acción. En ese caso, Mostrar solo restaura la visibilidad.
Trate de añadir form.WindowState = Normal
antes Show ().
Otros consejos
Ocultar su formulario con el NotifyIcon es a menudo deseable para que su aplicación se inicia en la bandeja de inmediato. Puede evitar que se haga visible reemplazando el método SetVisibleCore (). También normalmente quiere evitar que se cierre cuando el usuario hace clic en el botón X, reemplazar el método OnFormClosing para ocultar el formulario. Usted querrá un menú contextual para permitir que el usuario realmente salir de su aplicación.
Añadir un NotifyIcon y una ContextMenuStrip a su formulario. Dar la CMS la serie y los comandos de menú Salir. Hacer que el código de formulario como el siguiente:
public partial class Form1 : Form {
bool mAllowClose;
public Form1() {
InitializeComponent();
notifyIcon1.DoubleClick += notifyIcon1_DoubleClick;
notifyIcon1.ContextMenuStrip = contextMenuStrip1;
showToolStripMenuItem.Click += notifyIcon1_DoubleClick;
exitToolStripMenuItem.Click += (o, e) => { mAllowClose = true; Close(); };
}
protected override void SetVisibleCore(bool value) {
// Prevent form getting visible when started
// Beware that the Load event won't run until it becomes visible
if (!this.IsHandleCreated) {
this.CreateHandle();
value = false;
}
base.SetVisibleCore(value);
}
protected override void OnFormClosing(FormClosingEventArgs e) {
if (!this.mAllowClose) { // Just hide, unless the user used the ContextMenuStrip
e.Cancel = true;
this.Hide();
}
}
void notifyIcon1_DoubleClick(object sender, EventArgs e) {
this.WindowState = FormWindowState.Normal; // Just in case...
this.Show();
}
}