Wie verhindere ich, dass ein Benutzer ein Windows Forms Fenster minimiert?

Melden
  1. Minimieren-Schaltfläche entfernen
  2. Manuelles Verhindern der Minimierung über das WM_SYSCOMMAND-Messaging
  3. Zusammenfassung

In einer Windows Forms Anwendung kann es Situationen geben, in denen es unerwünscht ist, dass der Benutzer das Fenster minimiert. Standardmäßig erlaubt das Windows Forms Fenster, dass der Benutzer das Fenster über das Minimieren-Symbol in der Titelleiste reduziert. Um dieses Verhalten zu verhindern, gibt es mehrere Möglichkeiten, die man je nach Anforderung wählen kann.

Minimieren-Schaltfläche entfernen

Eine einfache Methode besteht darin, die Minimieren-Schaltfläche komplett aus der Titelleiste zu entfernen. Dafür kann in den Eigenschaften des Formulars die Eigenschaft MinimizeBox auf false gesetzt werden. Dies bewirkt, dass die Schaltfläche ausgeblendet wird, sodass der Benutzer nicht mehr die Möglichkeit hat, das Fenster zu minimieren.

Im Code sieht das zum Beispiel so aus:

this.MinimizeBox = false;

Alternativ kann diese Eigenschaft auch im Designer im Eigenschaftenfenster gesetzt werden.

Manuelles Verhindern der Minimierung über das WM_SYSCOMMAND-Messaging

Falls das Entfernen der Schaltfläche nicht ausreichend ist oder man die Minimierung gezielt unterbinden möchte, auch wenn der Benutzer andere Wege nutzt (z.B. Tastenkombinationen wie WIN+D oder über das Kontextmenü), kann man die Nachrichtenverarbeitung des Fensters überschreiben. Windows sendet dem Fenster verschiedene Nachrichten, unter anderem WM_SYSCOMMAND, wenn Systembefehle wie Minimieren, Maximieren oder Schließen ausgeführt werden.

Durch das Überschreiben der Methode WndProc im Formular kann man abfangen, ob der Minimieren-Befehl ausgeführt werden soll, und diesen in diesem Fall blockieren.

Ein Beispiel in C#:

protected override void WndProc(ref Message m){ const int WM_SYSCOMMAND = 0x0112; const int SC_MINIMIZE = 0xF020; if (m.Msg == WM_SYSCOMMAND && (m.WParam.ToInt32() & 0xFFF0) == SC_MINIMIZE) { // Minimieren verhindern return; } base.WndProc(ref m);}

Dieser Code prüft, ob die Nachricht ein Systemkommando zum Minimieren ist, und unterbindet die Weiterverarbeitung, was das Minimieren verhindert. Beachte, dass dies auch Tastenkürzel oder Programmaufrufe betrifft, die die Minimierung versuchen.

Zusammenfassung

Um zu verhindern, dass ein Windows Forms Fenster minimiert wird, reicht oft schon das Setzen von MinimizeBox = false aus, wodurch die Minimieren-Schaltfläche in der Titelleiste entfernt wird. Für eine striktere Kontrolle über das Minimieren kann man zusätzlich das Abfangen der WM_SYSCOMMAND-Nachricht und das Blockieren des Minimierens implementieren. Diese Ansätze können auch kombiniert werden, um das Minimieren vollständig zu verhindern.

0
0 Kommentare