2016-05-16 13 views
1

Ich versuche herauszufinden, ob meine Winform minimiert wurde oder nicht.Gibt es eine Möglichkeit zu wissen, ob ein Formular minimiert wurde?

Ich kann die Eigenschaft FormWindowState.Minimized für diesen Zweck nicht verwenden. Sagen wir einfach, dass diese Eigenschaft nicht für mich funktioniert.

Kann ich das deaktivierte Ereignis außerhalb des Fokus oder Formulars verwenden, um zu wissen, dass das Formular minimiert ist? Soweit ich weiß, gibt es kein Ereignis, wenn ein Formular minimiert wird.

+3

* Sagen wir einfach, dass diese Eigenschaft nicht für mich arbeitet * - bitte einen Grund dafür liefern, da dies das ist * nur * (empfohlen) Art und Weise ... – Idos

+0

Ich habe noch nicht herausgefunden, warum 'FormWindowState.Minimized' für mich nicht funktioniert, ich versuche nur, eine Lösung für dieses Problem zu finden. Gibt es einen anderen Weg? –

+3

Ich denke, ein besserer Ansatz wäre zu versuchen zu verstehen, warum 'FormWindowState.Minimized'' nicht funktioniert, anstatt nach einem Workaround zu suchen ... Poste deinen Code und stelle ein [mcve] bereit und ich bin sicher, dass die Leute es lieben würden um Ihnen zu helfen – Idos

Antwort

2

Ich kann nicht Eigentum FormWindowState.Minimized verwenden zu diesem Zweck

Dies ist in der Tat die Eigenschaft, die Sie für diesen Zweck verwendet werden sollen.

Kann ich das deaktivierte Ereignis außerhalb des Fokus oder Formulars verwenden, um zu wissen, dass das Formular minimiert ist? Soweit ich weiß, gibt es kein Ereignis, wenn ein Formular minimiert wird.

Wenn das Formular minimiert wird, wird das Ereignis SizeChanged ausgelöst. Zum Beispiel, versuchen Sie Folgendes:

// Inside the form constructor or load event 
this.SizeChanged += Form_SizeChanged; 

private void Form_SizeChanged(object sender, EventArgs e) 
{ 
    if (this.WindowState == FormWindowState.Minimized) 
     MessageBox.Show("I'm minimized."); 
} 
+0

SizeChanged Event sollte funktionieren, aber es wird jedes Mal gefeuert, wenn ich meine Formulargröße ändere. –

+0

In der Tat. Aber Sie werden die anderen Aufrufe ignorieren und nur den WindowState.Minimized überprüfen. Sie können die Änderung der WindowState-Eigenschaft nachverfolgen, dies ist jedoch nicht sinnvoll, da SizeChanged nur einmal ausgelöst wird, wenn das Formular minimiert wird. –

+0

Ja, das hat funktioniert. Danke für die Hilfe. –

Verwandte Themen