He intentado varias cosas, pero ninguno de ellos funciona ...no se puede llevar a consistentemente forma frontal
tengo formulario que debe venir en frente de todas las ventanas de NotifyIcon clic. Así que aquí es lo que he intentado:
private void notifyIcon1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.TopMost = true;
this.BringToFront();
this.Focus();
this.TopMost = false;
}
}
Luego trató de utilizar SetForegroundWindow:
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern bool SetForegroundWindow(IntPtr hwnd);
añadiendo
SetForegroundWindow(this.Handle);
al final del bloque if.
Finalmente, vi que cuando esto no funciona, si hago clic con el botón derecho del mouse en NotifyIcon y se abre el menú contextual, puedo hacer clic izquierdo en NotifyIcon y ponerlo al frente.
He intentado añadir este código al principio:
cmsNotifyIcon.Show();
cmsNotifyIcon.Close();
para que muestre y se cierra NotifyIcon menú de contexto, como una posible solución para la idea, pero no ayuda.
¿Alguna idea sobre cómo hacer esto, o solucionar este problema?
Buena idea, Activate() no puede arreglarlo. –
Puedo intentarlo, pero no tengo grandes esperanzas en esto, porque el evento MouseDown se desencadena, puedo verlo si inserto un punto de ruptura en el código. De todos modos, como esto no ocurre constantemente, necesito algo de tiempo para probar. –
Creo que tuve suficientes observaciones para afirmar que esto debería ser la solución a mi problema. Si de alguna manera el problema reaparece, lo reportaré. –