Maximize / Un-Maximize Ereignis abfangen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Maximize / Un-Maximize Ereignis abfangen

    Hi,

    Windows Forms haben in der rechten oberen Ecke i.a. ein "Maximize" Symbol. Wenn man drauf klickt wird das Fenster maximiert und der Button ändert sein Aussehen.

    Wenn man auf diesen veränderten Button klickt, wird die ursprüngliche Größe des Fensters wiederhergestellt und der Button erhält sein altes Aussehen zurück.

    Kann man den Klick auf den Maximize bzw. Un-Maximize Button im VB Programm abfangen? Ich habe dazu kein passendes Ereignis gefunden. (Das will aber nichts heißen, hehehe ... )

    Und noch etwas: Könnte man die Un-Maximize Funktion auch durch Programm Code auslösen?

    LG
    Peter
    Dafür gibt es kein Event (was nebenbei bemerkt recht unverständlich ist). Du kannst aber WndProc überschreiben und WM_MAXIMIZE bzw. WM_RESTORE abfangen.
    Senden kannst du einen solchen Befehl dann umgekehrt auch, indem du per SendMessage WM_MAXIMIZE oder WM_RESTORE sendest.

    Peter329 schrieb:


    Und noch etwas: Könnte man die Un-Maximize Funktion auch durch Programm Code auslösen?

    Dafür könnte man eine einfache Methode benutzen:

    VB.NET-Quellcode

    1. Me.WindowState = FormWindowState.Minimized

    oder halt "Normal" oder "Maximized"
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Peter329 schrieb:

    Ich habe dazu kein passendes Ereignis gefunden.
    Dieses:

    VB.NET-Quellcode

    1. Private Sub Form1_Resize(sender As System.Object, e As System.EventArgs) Handles MyBase.Resize
    2. If Me.WindowState = FormWindowState.Maximized Then
    3. MessageBox.Show("Max")
    4. ElseIf Me.WindowState = FormWindowState.Normal Then
    5. MessageBox.Show("Normal")
    6. ElseIf Me.WindowState = FormWindowState.Minimized Then
    7. MessageBox.Show("Min")
    8. End If
    9. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Beim minimieren wird das Resize-Event aufgerufen. Speicher dir also einfach eine Variable mit dem alten WindowState und überprüfe im ResizeEvent, ob sich diese vom aktuellen WindowState unterscheidet, wenn ja, dann hat sich der WindowState geändert ;)

    @RodFormGermany: Und wenn ich jetzt hin geh und manuell die Größe des Fensters verändere, dann wird trotzdem Normal nochmal erkannt, obwohl der WindowState gar nicht gewechselt hat.
    (Oder wenn jemand nen minimiertes Fenster verändert :D)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    @jvbsl:: Na dann musst Du halt noch 2, 3 Zeilen mehr proggen und testen, ob der letzte Zustand ein anderer war. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!