Wenn Form Minimiert wird, dann ...

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von pc-freack.

    Ein eigenes Event gibts dafür nicht.
    Du könntest entweder im Resize Event prüfen, ob die Form minimiert ist oder ein eigenes Event auslösen, wenn die Form minimiert wird.
    Hier zum Beispiel wurde das Thema schonmal behandelt:
    bytes.com/topic/visual-basic-n…catch-form-minimize-event
    Eigenes Event:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. #Region "Konstanten"
    2. Const WM_SYSCOMMAND As Int32 = &H112
    3. Const SC_MINIMIZE As Int32 = &HF020
    4. #End Region
    5. Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    6. MyBase.WndProc(m)
    7. If m.Msg = WM_SYSCOMMAND Then
    8. If m.WParam.ToInt32 = SC_MINIMIZE Then ' wenn Form minimiert wird
    9. RaiseEvent Minimize(New EventArgs()) ' das Event auslösen
    10. End If
    11. End If
    12. End Sub
    13. ' das eigene Event
    14. Public Event Minimize(ByVal e As EventArgs)
    15. ' Nun kann man das Event handeln
    16. Private Sub Me_Minimize(ByVal e As EventArgs) Handles Me.Minimize
    17. ' hier Code ausführen
    18. End Sub
    @TypeOf
    danke klappt super

    @SystenUnknow
    danke für Link, werd ich mir mal anschauen

    nur ein problem
    wen ich die Form dann anzeigen möchte mit me.show, dann wird sie minimiert angezeigt.
    Kann man die formmit einem Code wieder anzeigen lassen?
    hab ich schon versucht.
    Also nochmal zum verstehen.
    Wenn ich die Form minimiere, dann verschwindet sie aus der Taskleiste (ist gewollt).
    So
    und wenn ich jetzt auf meinem NotifyIcon doppelklicke, wird sie wieder in der Taskleiste angezeigt.
    aber ist minimiert.
    Ich möchte aber, das sie dann Normal angezeigt wird.
    ResizeEvent?

    Wenn ich das jetzt richtig verstanden habe, willst du wissen, wie ich überprüfe, ob die Form minimiert wurde.

    So mach ich das:
    Der Code


    VB.NET-Quellcode

    1. #Region "Konstanten"
    2. Const WM_SYSCOMMAND As Int32 = &H112
    3. Const SC_MINIMIZE As Int32 = &HF020
    4. #End Region
    5. Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    6. MyBase.WndProc(m)
    7. If m.Msg = WM_SYSCOMMAND Then
    8. If m.WParam.ToInt32 = SC_MINIMIZE Then ' wenn Form minimiert wird
    9. RaiseEvent Minimize(New EventArgs()) ' das Event auslösen
    10. End If
    11. End If
    12. End Sub
    13. ' das eigene Event
    14. Public Event Minimize(ByVal e As EventArgs)
    15. ' Nun kann man das Event handeln
    16. Private Sub Me_Minimize(ByVal e As EventArgs) Handles Me.Minimize
    17. Me.ShowInTaskbar = False
    18. End Sub


    Dann mach nicht Me.Show beim Icon sondern hole das Fenster mit Me.WindowState = Normal oder so zurück.

    Also bei mir hat das aber immer genauso funktioniert im Event abfragen obs Minimiert ist, dann aus Taskbar entfernen und bei nem anderen status wieder reintun.

    Edit: Achso ich glaube ich weiß was bei dir das Problem is, wenn die Form zurück geholt wird hat sie nicht den Focus, sie ist nicht minimiert. Wenn das Visual Basic minimierst kommt das Fenster auch den Focus, zur not setzt du ihn manuell.