Windows Forms – Minimize Mistery

April 15th, 2007 | Kategorien: .Net, C# | Tags:

Windows Forms sind eine tolle Sache. Innerhalb von wenigen Minuten klatsche ich ganze Programmlayouts hin, hooke einige Events und habe ein voll funktionsfähiges User Interface. Kein Hickhack mit Windowsnachrichten, kein rumärgern mit *** Fensterhandles (ich werde sie definitiv nicht vermissen …) und keine Programme mehr die sich nicht “windowstypisch” verhalten. Ein Segen …

Aber gestern fiel zum ersten mal ein Schatten auf die schöne, heile .Net Welt … Die Situation war eigentlich ganz einfach. Ein Programm verfügt über ein Haupt und vier (optionale) Subfenster. Wenn ich nun das Hauptfenster minimiere sollen die Subfenster dies gleichtun. Maximieren führt das ganze eben andersrum. Also, suchen wir mal das “Minimize / Maximize” oder ein ähnliches Event.

Nun, wer hats erraten? Richtig! Das Event gibt es schlichtweg nicht. Nach einer längeren Kuschelei mit Google dann die Lösung. Das gesuchte Event ist Resize. Grosse Klasse Microsoft … Nun sieht mein Eventhandling von Resize also folgendermaßen aus …

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 // We hook into this to grab the Minimize / Maximise Events
 
private void Form_Draw_Resize(object sender, EventArgs e)
 
{
 
    // Is the window minimized?
 
    if (this.WindowState == FormWindowState.Minimized)
 
    {
 
        // Handling
 
    }
 
    else if (this.WindowState == FormWindowState.Normal)
 
    {
 
        // Handling
 
    }    // Resize handling
 
}

Ganz grosses Kino. Damit ist also genau das passiert, was durch diese vordefinierten Events verhindert werden sollte. Ein Event “versteckt” mehrere Andere. Und der dumme Programmierer darf sich da durchsuchen.

No comments yet.