Button click wiederholen

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

Es gibt 52 Antworten in diesem Thema. Der letzte Beitrag () ist von janengel.

    Button click wiederholen

    Hallo,
    ich würde gerne den Click eines Buttons, mit einer festen Anzahl an Wiederholungen, simulieren.
    Wenn es geht würde ich die Zahl der Wiederholungen in eine Textbox eingeben. Der button der wiederholt werden soll, soll auch gleichzeitig die Wiederholung auslösen.
    ich bin recht neu bei Visual Basic und hoffe das es geht
    MfG Jan

    Verschoben. ~Thunderbolt

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

    Erkundige Dich mal nach For-Schleife.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Du hast doch die Lösung schon selbst gepostet, nur kannst Du den Integer auch innerhalb der Schleife deklarieren.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Kann nicht sein, was macht denn Button1 beim Klick?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Label1.Text = Würfel6()
    3. If Label1.Text = 1 Then Timer1.Start()
    4. If Label1.Text = 2 Then Timer2.Start()
    5. If Label1.Text = 3 Then Timer3.Start()
    6. If Label1.Text = 4 Then Timer4.Start()
    7. If Label1.Text = 5 Then Timer5.Start()
    8. If Label1.Text = 6 Then Timer6.Start()
    9. If Label1.Text = 1 Then Timer7.Start()
    10. If Label1.Text = 2 Then Timer7.Start()
    11. If Label1.Text = 3 Then Timer7.Start()
    12. If Label1.Text = 4 Then Timer7.Start()
    13. If Label1.Text = 5 Then Timer7.Start()
    14. If Label1.Text = 6 Then Timer7.Start()
    15. End Sub


    VB-Tags eingefügt. ~Thunderbolt

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

    Ok, bevor Du aber weitermachst, schalte erstmal Option Strict On, ein Text ist ein String und kein Integer. 7 Timer scheint mir btw etwas ungut, kann man sicher besser lösen, was hast Du vor?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich muss für die schule ein programm schreiben das würfelwürfe simuliert, zählt wie oft welche augenzahl vorkommt und daraus die wahrscheinlichkeit berrechnet und ein Dieagramm erstellt. Es muss bis zu 10millionen mal würfeln können.
    ich hab das so gemacht(bin noch nicht fertig):

    VB.NET-Quellcode

    1. Public Class Form1
    2. Function Würfel6() As Long
    3. Würfel6 = Int(6 * Rnd() + 1)
    4. End Function
    5. Public jan1 As Integer = 0
    6. Public jan2 As Integer = 0
    7. Public jan3 As Integer = 0
    8. Public jan4 As Integer = 0
    9. Public jan5 As Integer = 0
    10. Public jan6 As Integer = 0
    11. Public jan7 As Integer = 0
    12. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. End Sub
    14. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    15. jan1 = jan1 + 1
    16. TextBox1.Text = jan1
    17. If TextBox1.Text = jan1 Then Timer1.Stop()
    18. End Sub
    19. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    20. Label1.Text = Würfel6()
    21. If Label1.Text = 1 Then Timer1.Start()
    22. If Label1.Text = 2 Then Timer2.Start()
    23. If Label1.Text = 3 Then Timer3.Start()
    24. If Label1.Text = 4 Then Timer4.Start()
    25. If Label1.Text = 5 Then Timer5.Start()
    26. If Label1.Text = 6 Then Timer6.Start()
    27. If Label1.Text = 1 Then Timer7.Start()
    28. If Label1.Text = 2 Then Timer7.Start()
    29. If Label1.Text = 3 Then Timer7.Start()
    30. If Label1.Text = 4 Then Timer7.Start()
    31. If Label1.Text = 5 Then Timer7.Start()
    32. If Label1.Text = 6 Then Timer7.Start()
    33. End Sub
    34. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    35. jan2 = jan2 + 1
    36. TextBox2.Text = jan2
    37. If TextBox2.Text = jan2 Then Timer2.Stop()
    38. End Sub
    39. Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
    40. jan3 = jan3 + 1
    41. TextBox3.Text = jan3
    42. If TextBox3.Text = jan3 Then Timer3.Stop()
    43. End Sub
    44. Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
    45. jan4 = jan4 + 1
    46. TextBox4.Text = jan4
    47. If TextBox4.Text = jan4 Then Timer4.Stop()
    48. End Sub
    49. Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick
    50. jan5 = jan5 + 1
    51. TextBox5.Text = jan5
    52. If TextBox5.Text = jan5 Then Timer5.Stop()
    53. End Sub
    54. Private Sub Timer6_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer6.Tick
    55. jan6 = jan6 + 1
    56. TextBox6.Text = jan6
    57. If TextBox6.Text = jan6 Then Timer6.Stop()
    58. End Sub
    59. Private Sub Timer7_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer7.Tick
    60. jan7 = jan7 + 1
    61. TextBox7.Text = jan7
    62. If TextBox7.Text = jan7 Then Timer7.Stop()
    63. End Sub
    64. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    65. Dim i As Integer
    66. For i = 0 To 100
    67. Button1.PerformClick()
    68. Next
    69. End Sub
    70. End Class


    VB-Tags eingefügt. ~Thunderbolt

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

    Bitte benutze unbedingt die Forumfunktionen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Function Würfel6() As Long
    3. Würfel6 = Int(6 * Rnd() + 1)
    4. End Function
    5. Public jan1 As Integer = 0
    6. Public jan2 As Integer = 0
    7. Public jan3 As Integer = 0
    8. Public jan4 As Integer = 0
    9. Public jan5 As Integer = 0
    10. Public jan6 As Integer = 0
    11. Public jan7 As Integer = 0
    12. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    13. End Sub
    14. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    15. jan1 = jan1 + 1
    16. TextBox1.Text = jan1
    17. If TextBox1.Text = jan1 Then Timer1.Stop()
    18. End Sub
    19. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    20. Label1.Text = Würfel6()
    21. If Label1.Text = 1 Then Timer1.Start()
    22. If Label1.Text = 2 Then Timer2.Start()
    23. If Label1.Text = 3 Then Timer3.Start()
    24. If Label1.Text = 4 Then Timer4.Start()
    25. If Label1.Text = 5 Then Timer5.Start()
    26. If Label1.Text = 6 Then Timer6.Start()
    27. If Label1.Text = 1 Then Timer7.Start()
    28. If Label1.Text = 2 Then Timer7.Start()
    29. If Label1.Text = 3 Then Timer7.Start()
    30. If Label1.Text = 4 Then Timer7.Start()
    31. If Label1.Text = 5 Then Timer7.Start()
    32. If Label1.Text = 6 Then Timer7.Start()
    33. End Sub
    34. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    35. jan2 = jan2 + 1
    36. TextBox2.Text = jan2
    37. If TextBox2.Text = jan2 Then Timer2.Stop()
    38. End Sub
    39. Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
    40. jan3 = jan3 + 1
    41. TextBox3.Text = jan3
    42. If TextBox3.Text = jan3 Then Timer3.Stop()
    43. End Sub
    44. Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
    45. jan4 = jan4 + 1
    46. TextBox4.Text = jan4
    47. If TextBox4.Text = jan4 Then Timer4.Stop()
    48. End Sub
    49. Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick
    50. jan5 = jan5 + 1
    51. TextBox5.Text = jan5
    52. If TextBox5.Text = jan5 Then Timer5.Stop()
    53. End Sub
    54. Private Sub Timer6_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer6.Tick
    55. jan6 = jan6 + 1
    56. TextBox6.Text = jan6
    57. If TextBox6.Text = jan6 Then Timer6.Stop()
    58. End Sub
    59. Private Sub Timer7_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer7.Tick
    60. jan7 = jan7 + 1
    61. TextBox7.Text = jan7
    62. If TextBox7.Text = jan7 Then Timer7.Stop()
    63. End Sub
    64. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    65. Dim i As Integer
    66. For i = 0 To 100
    67. Button1.PerformClick()
    68. Next
    69. End Sub
    70. End Class

    So jetzt ist der Code lesbar. ,
    Anstatt den "Hilfs-Mod" zu spielen und ihn selbst darauf hinzuweisen, hättest du den Beitrag melden können. ~Thunderbolt

    LG

    Edit:

    VB.NET-Quellcode

    1. Function Würfel6() As Long
    2. Würfel6 = Int(6 * Rnd() + 1)
    3. End Function

    kann man ersetzen durch:

    VB.NET-Quellcode

    1. Dim rdm as New Random
    2. Function Würfel6() as Integer
    3. Return rdm.Next(0,7)
    4. End Function


    Was mir nicht einleuchten will ist, dass du 7 Timer startest, obwohl du eig nur einen bräuchtest. Auf jedenfall solltest du mal Option Strict On stellen(am besten gleich als Standard in allen Projekten) und deinen Code nochmal umschreiben, damit du nur einen Timer benötigst oder vllt garkeinen.

    LG

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

    Beispielsweise in dem du Enums oder ähnliches verwendest und dann überprüfst welche Einstellung du jetzt verwenden musst.
    Was mir jetzt so auffällt ist, dass du beim Button-Click eine Zahl würfelst und dann die Timer-Armee startest und die Timer nichts anderes machen als eine Integer zu erhöhen, eine Textbox befüllen und sich dann beenden. Du hast da eindeutig ein strukturellen Denkfehler in deinem Codekonstrukt.

    LG
    Das kann sehr gut sein bin ja blutiger Anfänger, wie würden Sie es denn umsetzten?
    Ich hätte nicht gewusst wie er sonst die Augenzahlen Anzeig und gleichzeitig speichert was wie oft vorkam.
    Das normale würfeln klappt ja auch schon nur das mit dem automatischen wiederholen noch nicht

    VB.NET-Quellcode

    1. Dim boxes() as Textbox = New Textbox() {Textbox1, Textbox2, Textbox3, Textbox4, Textbox5, Textbox6, Textbox7}
    2. Dim jans() as Integer = New Integer() {0,0,0,0,0,0,0}
    3. Dim rdm as New Random
    4. Dim option as Integer
    5. Function Würfel6() as Integer
    6. Return rdm.Next(0,8) 'erste Zahl mit inbegriffen, zweite nicht
    7. End Function
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. Würfeln()
    10. End Sub
    11. Private Sub Würfeln()
    12. option = Würfel6()
    13. jans(option) +=1
    14. boxes(option).Text = option.ToString
    15. End Sub
    16. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    17. Dim i As Integer
    18. For i = 0 To 100
    19. Würfeln()
    20. Next
    21. End Sub

    Ich hab den Code kurz geschrieben, deshalb weiss ich nicht ob er wirklich funktioniert. Musst du halt testen.

    LG
    Edit:
    Du musst eventuell noch die Werte anpassen, da ich einfach die Anzahl deiner Textboxen und Variablen genommen hab.

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Public jan1 As Integer = 0
    3. Public jan2 As Integer = 0
    4. Public jan3 As Integer = 0
    5. Public jan4 As Integer = 0
    6. Public jan5 As Integer = 0
    7. Public jan6 As Integer = 0
    8. Public jan7 As Integer = 0
    9. Dim boxes() As TextBox = New TextBox() {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7}
    10. Dim jans() As Integer = New Integer() {0, 0, 0, 0, 0, 0, 0}
    11. Dim rdm As New Random
    12. Dim option as Integer
    13. Function Würfel6() As Integer
    14. Return rdm.Next(0, 8) 'erste Zahl mit inbegriffen, zweite nicht
    15. End Function
    16. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    17. Würfeln()
    18. End Sub
    19. Private Sub Würfeln()
    20. option = Würfel6()
    21. jans(option) +=1
    22. boxes(option).Text = option.ToString
    23. End Sub
    24. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    25. Dim i As Integer
    26. For i = 0 To 100
    27. Würfeln()
    28. Next
    29. End Sub
    30. End Class

    er wirft ein paar fehler aus:
    Fehler 4 Ausdruck erwartet. Z 24 s6
    Fehler 5 Ausdruck erwartet Z25 s6
    Fehler 1 Bezeichner und Attribute sind für diese Anweisungen ungültig. z15 s1
    Fehler 3 Der Ausdruck ist keine Methode. z24 s1
    Fehler 2 Die Anweisung ist innerhalb einer Methode/eines mehrzeiligen lambda-Ausdrucks ungültig. z23 s1
    Option​ ist ein reserviertes Schlüsselwort, Du musst um den Namen ​[] setzen oder einen anderen wählen. Fehler 3 besagt, dass Du nicht einfach den Operator auf ein Array anwenden kannst, keine Ahnung, was damit gemacht werden sollte, aber so geht es jdf. nicht.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: