Ereignis "Form gets minimized" abfangen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ereignis "Form gets minimized" abfangen

    Hi,

    Ich möchte das Ereignis "Form gets minimized" abfangen.

    Leider finde ich da in den Form Ereignissen nichts Passendes. Oder habe (ein ums andere Mal) Tomaten auf den Augen.

    Ich habe hilfsweise damit gearbeitet:

    VB.NET-Quellcode

    1. Private Sub frmHide_VisibleChanged(sender As Object, e As EventArgs) Handles Me.VisibleChanged
    2. MessageBox.Show("ME.Visible=" & Me.Visible.ToString)
    3. End Sub
    4. Private Sub frmHide_Resize(sender As Object, e As EventArgs) Handles Me.Resize
    5. MessageBox.Show("Resize Size=" & Me.Size.ToString )
    6. End Sub


    "Visible" ist nicht brauchbar, weil es beim minimieren nicht feuert.

    "Resize" feuert bei verschiedenen Gelegenheiten u.a. beim minimize ... deshalb man muss halt herausfinden, ob das Minimize Event vorliegt oder nicht. Dazu habe ich Me.Size abgefragt.

    Beim minimize erhalte ich:

    Quellcode

    1. Resize Size={Width=601, Height=551} <-- vom Load
    2. Resize Size={Width=474, Height=1040} <--- händisches resize
    3. Resize Size={Width=160, Height=27} <-- minimize


    Während die ersten beiden Resize Events ja noch ganz manierlich aussehen, verwirrt mich das Resize Event durch "minimize". Naiv wie ich nun mal bin, hätte ich da Width=0 und Height=0 erwartet. Isses aber nich!

    Meine Frage:

    Gibt es keine "bessere" Möglichkeit das Minimize Event abzufangen als das Resize Event auf solche "krummen" Werte abzufragen ? Sollte doch eigentlich möglich sein. Wahrscheinlich kann mir jemand aus dem Handgelenk sagen, wie man das macht! :)

    LG
    Peter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()

    Ggf. (auch) den ResizeEnd - oder SizeChanged-Ereignishandler nutzen. Der Fensterstatus muss ja nicht dauernd während des Resizens abgefragt werden.
    Hab grad gesehen, dass der SizeChanged-EH genauso oft bei Formänderungen aufgerufen wird wie der Resize-EH. Wenn man fertig ist, wird jedoch nur 1x das ResizeEnd-Event aufgerufen. Daher sollte der der passende EH für das Vorhaben sein.
    EDIT: ...der dann aber interessanterweise nicht beim Minimieren aufgerufen wird. Also doch Resize oder SizeChanged.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „VaporiZed“ ()

    Genial ... einfach auf die "Minimized" Eigenschaft abfragen ... und schon funzt die Sache !

    Allerdings muss es schon beim Resize Event bleiben. Das ResizeEnd Event ist nicht ausreichend, weil sonst der Klick auf den Minimize Button der Form nicht abgefangen wird !

    Alles in allem klappt das jetzt ganz nach meinem Gusto ! Danke an die Ratgeber ! :)

    LG
    Peter
    @Peter329 Du kannst in der WndProc() das Minimizen abfangen, bevor iwas anderes mit der Größe getan wird.
    Gugst Du hier: social.msdn.microsoft.com/Foru…r-wie?forum=visualbasicde
    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!