Formevent bei Minimieren

  • VB.NET

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

    Klick auf Deine Form und sieh Dir im Designer (auf den Blitz klicken) alle unterstützten Events an.
    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!

    Dieter__ schrieb:

    Nur dieses Event meldet sich auch beim starten des Programmes. Das sollte nicht sein.

    hatte es bei einem meiner Programme so gemacht, dass ich eine Public Flag Variable gemacht habe welche beim ersten mal den Code vom Resize Event unnütz macht.

    Bsp.:

    VB.NET-Quellcode

    1. Public _StartFlag as Boolean = True
    2. Private Sub Form1_Resize(.......)
    3. If Not StartFlag Then
    4. 'code vom resize
    5. Else
    6. _StartFlag = False
    7. End If


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hab ich auch mal benutzt. ist zwar etwas provisorisch aber naja:

    1. Timer Erstellen(Enabled = True; Interval = 50(oder was auch immer...))
    2. ins Timer1.Tick Event:

    VB.NET-Quellcode

    1. If Me.WindowState = FormWindowState.Minimized Then
    2. 'dein Kram^^
    3. 'ggf. TImer1.Stop
    4. End If


    LG

    Programmier-Felix
    Okay ich hab es jetzt mit dem StartFlag gemacht. Das geht auch soweit nur ich möchte, wenn es minimiert wird ein NotifyIcon erstellen, dass dann unten in der Taskleiste erscheint und das Programm nicht mehr als minimiert angezeigt wird, sondern nur noch in der Taskleiste bei den Symbolen vorhanden ist.
    Aber genau das Funktioniert nicht. Das Programm verschwindet nach dem minimieren einfach und taucht nicht bei den Symbolen auf.

    Hier der Code:

    VB.NET-Quellcode

    1. Private Sub frm_main_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. If Not StartFlag Then
    3. Me.Hide()
    4. Me.ni_sicherung.Visible = True
    5. Me.ni_sicherung.ShowBalloonTip(2000, "Zeiterfassung", "Die Arbeitszeit läut weiter." & vbCrLf & "Zum Pausieren oder Stoppen Doppelklick auf das Symbol", ToolTipIcon.Info)
    6. Else
    7. StartFlag = False
    8. End If
    9. End Sub
    mach mal das Me.Hide() als letzes

    EDIT:
    hier aus einem Programm von mir:

    VB.NET-Quellcode

    1. Me.WindowState = FormWindowState.Minimized 'Programm verstecken
    2. Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
    3. Me.ntfMain.Visible = True
    4. Me.ShowInTaskbar = False
    5. Me.Hide()

    Einziger Unterschied ich mach das im Form_Load, da es beim Start im Notify sein soll

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Es hat sich leider doch noch nicht alles erledigt.

    Wenn ich die Form jetzt minimiere und sie dann in der Taskleiste als Symbol verschwindet und ich sie dann wieder aufrufen will. muss ich einmal einen Doppelklick draufmachen dann erscheint sie wieder als Programm und das das Symbol ist weg. Aber das Programm ist dann noch minimiert und wenn ich es dann groß machen will und draufklicke, wird es erst wieder zu dem Symbol und wenn ich dann nochmal einen Doppelklick auf das Symbol mach, wird es erst groß und ich kann es wieder bedienen.
    Wer kann mir da Abhilfe schaffen ?
    Ich habe es weiterhin mit dem Doppelklick Event gemacht. Aber jetzt mit dem Programmcode:


    VB.NET-Quellcode

    1. Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ni_sicherung.MouseDoubleClick
    2. Me.Show()
    3. Me.WindowState = FormWindowState.Normal
    4. ni_sicherung.Visible = False
    5. End Sub



    und mein Resize funktioniert jetzt auch mit dem Code:

    VB.NET-Quellcode

    1. Private Sub frm_main_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    2. If Me.WindowState = FormWindowState.Minimized = True Then
    3. Me.Hide()
    4. Me.ni_sicherung.Visible = True
    5. Me.ni_sicherung.ShowBalloonTip(2000, "Zeiterfassung", "Die Arbeitszeit läut weiter." & vbCrLf & "Zum Pausieren oder Stoppen Doppelklick auf das Symbol", ToolTipIcon.Info)
    6. End If
    7. End Sub


    Mit dem Code funktioniert jetzt alles. Und ich hoffe doch auch das es auch so bleibt, dass alles funktioniert.

    In diesem Sinne, vielen Danke ;).
    Nach dem Hide würde ich die Form wieder auf Normal setztn, ansonsten kommt manchmal die Resize Animation beim Wiederherstellen der Form, ich persönlich mag das nicht so, sondern die Form soll gleich beim Click oder doppelklick angezeigt werden.

    VB.NET-Quellcode

    1. If Me.WindowState = FormWindowState.Minimized = True Then
    ist syntaktisch richtig, aber logisch nicht ganz korrekt.

    VB.NET-Quellcode

    1. If Me.WindowState = FormWindowState.Minimized Then
    reicht völlig.
    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!
    Sieh Dir doch einfach mal an, was da steht. Ein logischer Ausdruck, keine Zuweisung:

    VB.NET-Quellcode

    1. If Me.WindowState = FormWindowState.Minimized = True Then
    2. ' mit Klammern, die setzt VB implizit richtig, sieht es so aus:
    3. If (Me.WindowState = FormWindowState.Minimized) = True Then

    und das schreibt man:

    VB.NET-Quellcode

    1. If (Me.WindowState = FormWindowState.Minimized) Then
    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!