Fenster größer machen (Timer)

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Starz.

    Fenster größer machen (Timer)

    Hallo liebes vbp-forum.

    Ich habe folgendes Problem:

    Ich möchte das mein Fenster größer wird...

    VB.NET-Quellcode

    1. Private Sub TimerAus_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerAus.Tick
    2. If Me.Height = 100 Then
    3. TimerAus.Stop()
    4. End If
    5. Me.Height = Me.Height + 5
    6. End Sub

    Doch irgendwie hört es nicht auf.... der Timer läuft immer weiter.
    Das Fenster wird weitaus größer als 100.


    Wieso?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Was meinst du damit?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Das hängst von Startwert ab:

    Wenn zb das Fenster genau 9 groß war ist es so: 9 - 14 - 19 - 24 - 29 - 34 - 39 - 44 - 49 - ... - 99 - 104


    Besser ist es so:

    VB.NET-Quellcode

    1. If Me.Height >= 100 then

    VB.NET-Quellcode

    1. TimerAus.Enabled = False


    VB.NET-Quellcode

    1. Else

    VB.NET-Quellcode

    1. Me.Height += 5


    VB.NET-Quellcode

    1. End If


    (Srry. Musste es so machen, weil der die Zeilenumbrüche bei Codes nicht checkt!)

    Falls das Form Größer oder Gleich mit 100 ist wird gestoppt! Falls nicht, wird die Größe um 5 gesteigert!
    Es gibt eine allgemeingültige Regel die auch mal Ausnahmen zulässt:
    Gute Programmierer sind schlechte Grafiker und gute Grafiker sind schlechte Programmierer
    schon schon so schreibe ich dass normal:

    VB.NET-Quellcode

    1. Dim HDim 2



    Die zwei Objekte sind von Zeilenumbrüchen getrennt! Bei mit schreibt er es mir auf Vorschau zusammen! Das meine Ich!
    Es gibt eine allgemeingültige Regel die auch mal Ausnahmen zulässt:
    Gute Programmierer sind schlechte Grafiker und gute Grafiker sind schlechte Programmierer
    So das ausfahren klappt,

    Ich hab das ganze (nur als test) mit 4 Timern gemacht:
    Wichtig sind jez nur 2:

    VB.NET-Quellcode

    1. Private Sub TimerEin2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerEin2.Tick
    2. If Me.Height <= 70 Then
    3. TimerEin2.Stop()
    4. Me.Close()
    5. End If
    6. Me.Height = Me.Height - 7
    7. End Sub
    8. Private Sub TimerEin_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerEin.Tick
    9. If Me.Width <= 140 Then
    10. TimerEin.Stop()
    11. TimerEin2.Start()
    12. End If
    13. Me.Width = Me.Width - 7
    14. End Sub
    15. Private Sub frmWeb_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    16. e.Cancel = True
    17. TimerEin.Start()
    18. End Sub


    Jez hab ich den selben fehler wie vorhin,
    Der Timer versucht immer die Form kleiner zu machen OBWOHL er gestopt sein sollte.

    Warum?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Du hast eine Endlosschleife drin. Im 1. Timer wird nach Me.Close trotzdem nochmal die Formhöhe verkleinert. Anschließend wird vom FormClosing Close gecancelt und wieder die Timer gestartet, die sich dann stoppen und die Form wieder einen Schritt verkleinern, worauf wieder FormClosing....

    Also 1. brauchst du nur 1 Timer in dem du die If-Abfragen so schachtelst, dass deine beiden Aktionen schmaler und flacher nacheinander ausgeführt werden. Sind alle Abfragen erfüllt, setzt du ein Flag, dass du im FormClosing auswertest (If Not Flag Then e.Cancel=true)
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    vielleicht vergesse ich da etwas,
    aber sollte ein simples

    VB.NET-Quellcode

    1. Exit Sub

    nicht dann in der if-abfrage stehen ?

    dann macht der die letzte änderung auch nicht mehr.

    edit:
    ah ich sehe grad meinen eigenen fehler....
    man könnte das einfach denk ich mit einem elseteil machen.
    ganze sähe dann so aus:

    VB.NET-Quellcode

    1. Private Sub TimerEin2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerEin2.Tick
    2. If Me.Height <= 70 Then
    3. TimerEin2.Stop()
    4. Me.Close()
    5. Else
    6. Me.Width = Me.Width - 7
    7. End If
    8. End Sub
    9. Private Sub TimerEin_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerEin.Tick
    10. If Me.Width <= 140 Then
    11. TimerEin.Stop()
    12. TimerEin2.Start()
    13. Else
    14. Me.Width = Me.Width - 7
    15. End If
    16. End Sub
    17. Private Sub frmWeb_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    18. e.Cancel = True
    19. TimerEin.Start()
    20. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „schoeler.k“ ()