Se si tenta di visualizzare una MessageBox di un'applicazione che risiede nella system tray, può succedere che essa rimanga nascosta dalle altre finestre aperte sul desktop. Il problema è dovuto al fatto che la MessageBox appartiene ad un'applicazione che non è in foreground. Fortunamentamente, uno degli overload della funzione MessageBox.Show consente di specificare di fronte a quale finestra visualizzare il messaggio: il trucco, dunque, è visualizzare la MessageBox davanti alla finestra che attualmente è in primo piano.
 Innanzo tutto dobbiamo definire una classe che restituisce la finestra in primo piano: 
  public class ForegroundWindow : IWin32Window
{
    private static ForegroundWindow _window = new ForegroundWindow();
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();  
    
    private ForegroundWindow() { }
    public static IWin32Window Instance
    {
        get { return _window; }
    }
    IntPtr IWin32Window.Handle
    {
        get { return GetForegroundWindow(); }
    }
}
A questo punto, per essere essere sicuri che la MessageBox sia visibile sul desktop, è sufficiente specificare la finestra in primo piano come "proprietaria" del messaggio:
MessageBox.Show(ForegroundWindow.Instance, "Questa finestra è visibile.", "Prova");
Fonte: MSDN Magazine di Luglio 2004