Timer für langsamen Textaufbau ???

  • VB.NET

Es gibt 52 Antworten in diesem Thema. Der letzte Beitrag () ist von zn-gong.

    VB1963 schrieb:

    Der Timer tickt jede Sekunde aber du willst erst nach 3, 5, 7 und 9 Sekunden etwas tun. Daher ein Counter, den du je Tick um 1 erhöhst und dir somit den Stand der verstrichenen Zeit merktst und abfrägst...


    Das ist mir soweit noch klar.

    Mein Problem ist nur, wenn ich diesen Text in Visual Basic übernehme bekomme ich immer eine Fehlermeldung.

    Counter wurde nicht deklariert.....

    Was mache ich falsch ?

    keyman schrieb:

    Was mache ich falsch ?
    Du ignorierst Fragen:

    RodFromGermany schrieb:

    Was ganz genau ist

    keyman schrieb:

    VB.NET-Quellcode

    1. Timer1
    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!
    Wenn es zum Beispiel ein fester satz ist dann kannst du eine Schleife verwenden

    VB.NET-Quellcode

    1. For i as Integer = 1 to 10
    2. If i = 1 then TextBox1.Text = "Hallo"
    3. If i = 3 then TextBox1.Text = "Hallo Ich"
    4. ODER
    5. If i = 3 then TextBox.Text += " Ich"
    6. Thread.Sleep(ZEIT)
    7. Next


    Wenn du keinen festen Text hast dann splitte den String in eine Liste
    zum Beispiel List(Of String)

    Dann machst du die Schleife So

    VB.NET-Quellcode

    1. For i as integer = 0 to Liste.items.count -1
    2. Textbox1.text += " " + Liste(i)
    3. Thread.Sleep(ZEIT)
    4. Next


    Das war jetzt frei aus dem Kopf
    @popopirat97
    Funktioniert, nur ist das eher suboptimal. Die Idee mit dem Timer ist schon so richtig, da so der UI-Thread durch das Sleep eingefroren wird.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    keyman schrieb:

    Timer1 ist der Timer den ich nutze.
    Wieso ?
    weil diese Aussage nicht zu diesem Code hier passt:

    keyman schrieb:

    VB.NET-Quellcode

    1. if Timer1=3 then Me.Label1.Text = text(0)
    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!
    Funktioniert, nur ist das eher suboptimal. Die Idee mit dem Timer ist schon so richtig, da so der UI-Thread durch das Sleep eingefroren wird.


    Stimmt auffällig, kommt natürlich drauf an ob während so einer Grafik überhaupt eingaben im User Interface erforderlich sind :)
    LG
    Hier mal mein Code.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Counter1 As Integer
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Timer1.Start()
    5. End Sub
    6. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    7. If Counter1 = 2 Then Me.Label1.Text = Text(0)
    8. If counter1 = 5 Then Me.Label1.Text = Text(1)
    9. If counter1 = 7 Then Me.Label1.Text = Text(2)
    10. If counter1 = 9 Then Me.Label1.Text = Text(3)
    11. If counter1 <> 9 Then
    12. counter1 += 1
    13. Else
    14. Timer1.Stop()
    15. counter1 = 0
    16. End If
    17. End Sub
    18. End Class


    Es funktioniert soweit jetzt auch.

    Was noch gut wäre, wenn er den Text geschrieben hat, soll da Label wieder auf null sein.
    So wie es jetzt eingestellt ist, bleibt das letzte Wort immer stehen.

    Vielen Dank an alle.
    Und was noch gut wäre, wenn er den Text geschrieben hat, soll da Label wieder auf null sein.
    ...in Zeile 20 schreibst du einfach Me.Label1.Text = ""
    Nur wo kann ich den Text ändern ?
    der Text steht doch in folgendem Array - das musst du doch vorher definiert haben...
    Dim text As String() = new String() {"hallo", "ich", "bin", "da"}
    @TE: ja, gut

    nun brauchst du noch ein String-Array, wo dein Text auch drin steht.

    Weil einfach Text(0), Text(1) etc. auszugeben - vermutlich weißt du garnet, wo diese Texte herkommen.

    Also mach ein eigenes Text-Array - mehr noch nicht.

    poste dann den Code nochmal, dann kann man das funktionsfähig machen.

    VB1963 schrieb:

    der Text steht doch in folgender Liste<br>Dim text As String() = new String() {"hallo", "ich", "bin", "da"}
    naja - bei ihm ja grad noch nicht.
    So hier mal der neue Code

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Counter1 As Integer
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Timer1.Start()
    5. End Sub
    6. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    7. Dim Text As String() = New String() {"hallo", "ich", "bin", "da"}
    8. If Counter1 = 2 Then Me.Label1.Text = Text(0)
    9. If Counter1 = 5 Then Me.Label1.Text = Text(1)
    10. If Counter1 = 6 Then Me.Label1.Text = Text(2)
    11. If Counter1 = 7 Then Me.Label1.Text = Text(3)
    12. If Counter1 <> 9 Then
    13. Counter1 += 1
    14. Else
    15. Timer1.Stop()
    16. Counter1 = 0
    17. Me.Label1.Text = ""
    18. End If
    19. End Sub
    20. End Class



    Was ich noch getestet habe war so.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Counter1 As Integer
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Timer1.Start()
    5. End Sub
    6. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    7. If Counter1 = 2 Then Me.Label1.Text = "hallo"
    8. If Counter1 = 5 Then Me.Label1.Text = "ich"
    9. If Counter1 = 6 Then Me.Label1.Text = "bin"
    10. If Counter1 = 7 Then Me.Label1.Text = "da"
    11. If Counter1 <> 9 Then
    12. Counter1 += 1
    13. Else
    14. Timer1.Stop()
    15. Counter1 = 0
    16. Me.Label1.Text = ""
    17. End If
    18. End Sub
    19. End Class



    Diese Version funktioniert genau so.
    Nur ist mein Weg der Falsche ?
    Oder könnte ich auch beide Wege gehen ?

    Bzw wo genau liegt der Unterschied?

    Vielen Dank

    keyman schrieb:

    Diese Version funktioniert genau so.
    Was heißt "genau so"?
    genau so richtig, oder genau so falsch?

    Also wenns das tut, was du willst, dann ist ja gut, und dann kann man nicht wirklich sagen "eines der beiden ist Falsch".

    (Allenfalls kann man noch von falsch sprechen, wenn die eine Lösung klar besser ist. Weil dann gibts keinen Grund, die annere zu nehmen - die wäre also falsch.)