2008-12-09 10 views
25

Gibt es eine einfache Methode zum Wiederherstellen eines minimierten Formulars in seinen vorherigen Zustand, entweder Normal oder Maximized? Ich erwarte die gleiche Funktionalität wie das Klicken auf die Taskleiste (oder klicken Sie mit der rechten Maustaste und wählen Sie Wiederherstellen).Wiederherstellen von WindowState von Minimiert

Bisher habe ich das, aber wenn das Formular zuvor maximiert wurde, kommt es immer noch als normales Fenster zurück.

Muss ich die Zustandsänderung im Formular behandeln, um den vorherigen Zustand zu erinnern?

Antwort

31

Ich verwende die folgende Erweiterung Methode:

using System.Runtime.InteropServices; 

namespace System.Windows.Forms 
{ 
    public static class Extensions 
    { 
     [DllImport("user32.dll")] 
     private static extern int ShowWindow(IntPtr hWnd, uint Msg); 

     private const uint SW_RESTORE = 0x09; 

     public static void Restore(this Form form) 
     { 
      if (form.WindowState == FormWindowState.Minimized) 
      { 
       ShowWindow(form.Handle, SW_RESTORE); 
      } 
     } 
    } 
} 

Dann form.Restore() in meinem Code nennen.

+0

Sieht sonst jemand mehrere Symbole in der Taskleiste angezeigt, wenn Sie auf den Pfeil^klicken (aka mehr Symbole)? Wenn Sie den Mauszeiger über die anderen bewegen, verschwinden sie. Es scheint also so zu sein, als würde es sich um ein Aktualisierungsproblem handeln. – MacGyver

4

könnten Sie simulieren in der Taskleiste Schaltfläche wie folgt klicken:

SendMessage(docView.Handle, WM_SYSCOMMAND, SC_RESTORE, 0); 
3

Für mich ist der obige Code funktioniert nicht.

Aber endlich habe ich den Arbeitscode gefunden. Hier ist es:

Ich denke, Sie können alle erforderlichen "importierten" Funktionen durch einfaches googlen finden.

11

Der einfachste Weg, um eine Form in den Normalzustand wiederherzustellen ist:

if (MyForm.WindowState == FormWindowState.Minimized) 
{ 
    MyForm.WindowState = FormWindowState.Normal; 
} 
+0

Was, wenn der vorherige Fensterzustand nicht "Normal" sondern "Maximiert" war? –

+0

Sie können die Schaltfläche "Zurücksetzen" in der oberen Ecke der Fenster verwenden –

-1

Der obige Code für mich nicht ganz funktioniert hat in allen Situationen

Nachdem die Fahnen Überprüfung Ich muss auch prüfen ShowCmd = 3 und wenn ja, maximiere sonst wieder

Verwandte Themen