Frage

Ich mag feststellen, ob meine Anwendung unter bestimmten Situationen minimiert wird, und wenn ja, muss das Fenster gestellt werden. Das kann ich leicht wie folgt:

if(this.WindowState == FormWindowState.Minimized) {
    this.WindowState = FormWindowState.Normal;
}

Doch was passiert, wenn der Benutzer zuerst die Form maximiert, dann minimiert das? Ich weiß nicht, ob die WindowState zu FormWindowState.Normal oder FormWindowState.Maximized einzustellen. Gibt es eine Methode oder API-Aufruf kann ich überprüfen, um dieses Problem zu lösen?

War es hilfreich?

Lösung

Der Code unten tut, was Sie brauchen. Aufschalten Wahl des Benutzers ziemlich unklug btw ist.

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        mLastState = this.WindowState;
    }
    FormWindowState mLastState;
    protected override void OnResize(EventArgs e) {
        base.OnResize(e);
        if (mLastState != this.WindowState) {
            if (this.WindowState == FormWindowState.Minimized) this.WindowState = mLastState;
            else mLastState = this.WindowState;
        }
    }
}

Andere Tipps

Ich benutze diese Lösung bildet in MDI Form wiederherzustellen. Zuerst müssen Sie definieren:

[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);

private const int SW_RESTORE = 9;

und wenn es um die Wiederherstellung:

ShowWindowAsync(this.MdiChildren[i].Handle, this.SW_RESTORE);

Dies wird ohne die Verwendung von zusätzlichen staatlichen Halter Form in den vorherigen Zustand wiederherzustellen. Auch Sie können diesem Artikel interessant finden

Ich glaube, Sie sollten in der Lage sein this.Show() zu nennen, und es wird auf den vorherigen (sichtbar) Zustand gestellt werden.

Hier ist ein Ansatz, der die OnResize Methode des Formulars

https://stackoverflow.com/a/6837421/578731 :

  

Nicht sicher, dass dies für alle arbeiten, aber ich lief in dieser heute und jemand auf die Team vorgeschlagen " haben Sie versucht normal "?

     

Stellt sich heraus, er hatte Recht. Die folgende scheint zu schön Fenster wiederherstellen:

if (myWindow.WindowState == WindowState.Minimized)
    myWindow.WindowState = WindowState.Normal;
     

Das funktioniert ganz gut, um das Fenster zu Maximized Wiederherstellung bei Bedarf. Es scheint entscheidend für den minimierten Zustand zu überprüfen, zuerst als Aufruf WindowState.Normal ein zweites Mal wird die „Wiederherstellung“ Ihr Fensters auf seinen nicht-maximierten Zustand.

     

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top