Buttons, Checkbox, nacheinander klicken wenn.....

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von FormFollowsFunction.

    Buttons, Checkbox, nacheinander klicken wenn.....

    Hallo, ich steh etwas aufm Schlauch, möchte folgendes Realisieren, hab aber keine Idee wie.

    Ausgang, 8 Buttons, 8 Checkboxen, 1Timer, 1 Start Button
    1. wenn Start, alle 8 Buttons nacheinander per PerformClick() -> klicken, das ist ja kein Problem, funktioniert !
    2. Problem a) ich möchte das mindestens IMMER 2 Checkboxen True sind, keine Idee wie...
    3. Problem b) es sollen immer nur die Buttons per PerformClick() -> geklickt werden, deren Checkbox auch True ist, keine Idee wie...

    Beispiel,
    Checkbox 1 bis 4 True --> Click 1->2->3->4->1->2->3->4 usw
    Checkbox 5 und 8 True--->Click 5->8->5->8 usw

    Danke für die Hilfe, hier der Code

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _currentColorButton As ColorButton
    3. Private Enum ColorButton As Integer
    4. Button1 = 1
    5. Button2 = 2
    6. Button3 = 3
    7. Button4 = 4
    8. Button5 = 5
    9. Button6 = 6
    10. Button7 = 7
    11. Button8 = 8
    12. End Enum
    13. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    14. End Sub
    15. 'Start Button, jetzt gehts los
    16. Private Sub Button_Start_Click(sender As Object, e As EventArgs) Handles Button_Start.Click
    17. Timer1.Interval = 1000 '1sekunde
    18. Button1.PerformClick() '1.Button klicken
    19. Timer1.Start() 'Timer starten
    20. End Sub
    21. 'Timer, wenn Tick, nächsten Button klicken wenn entsprechende Checkbox aktiv/true ist
    22. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    23. 'hier schauen welcher Button war zuletzt geklickt, also nächsten Button klicken WENN die entsprechende Checkbox true ist
    24. Select CurrentColorButton
    25. Case ColorButton.Button1
    26. Button2.PerformClick()
    27. Case ColorButton.Button2
    28. Button3.PerformClick()
    29. Case ColorButton.Button3
    30. Button4.PerformClick()
    31. Case ColorButton.Button4
    32. Button5.PerformClick()
    33. Case ColorButton.Button5
    34. Button6.PerformClick()
    35. Case ColorButton.Button6
    36. Button7.PerformClick()
    37. Case ColorButton.Button7
    38. Button8.PerformClick()
    39. Case ColorButton.Button8
    40. Button1.PerformClick()
    41. End Select
    42. End Sub
    43. 'die 8 Button
    44. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    45. CurrentColorButton = ColorButton.Button1 'Setzen, welcher Button wurde geklickt
    46. End Sub
    47. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    48. CurrentColorButton = ColorButton.Button2 'Setzen, welcher Button wurde geklickt
    49. End Sub
    50. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    51. CurrentColorButton = ColorButton.Button3 'Setzen, welcher Button wurde geklickt
    52. End Sub
    53. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    54. CurrentColorButton = ColorButton.Button4 'Setzen, welcher Button wurde geklickt
    55. End Sub
    56. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    57. CurrentColorButton = ColorButton.Button5 'Setzen, welcher Button wurde geklickt
    58. End Sub
    59. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    60. CurrentColorButton = ColorButton.Button6 'Setzen, welcher Button wurde geklickt
    61. End Sub
    62. Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
    63. CurrentColorButton = ColorButton.Button7 'Setzen, welcher Button wurde geklickt
    64. End Sub
    65. Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    66. CurrentColorButton = ColorButton.Button8 'Setzen, welcher Button wurde geklickt
    67. End Sub
    68. 'Checkboxen
    69. Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    70. End Sub
    71. Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
    72. End Sub
    73. Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged
    74. End Sub
    75. Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox4.CheckedChanged
    76. End Sub
    77. Private Sub CheckBox5_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox5.CheckedChanged
    78. End Sub
    79. Private Sub CheckBox6_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox6.CheckedChanged
    80. End Sub
    81. Private Sub CheckBox7_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox7.CheckedChanged
    82. End Sub
    83. Private Sub CheckBox8_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox8.CheckedChanged
    84. End Sub
    85. 'Rückgabe welcher Button wurde geklickt
    86. Private Property CurrentColorButton As ColorButton
    87. Get
    88. Return _currentColorButton
    89. End Get
    90. Set(ByVal value As ColorButton)
    91. _currentColorButton = value
    92. Me.Text = value.ToString()
    93. End Set
    94. End Property
    95. End Class​


    Grüße
    @kollimann Mach Dir ein Array von 8 Boolean.
    Wird eine CheckBox (un)gecheckt, wird das kommunizierende Arrayelement entsprechend gesetzt.
    In jedem CheckBox_CheckChange zählst Du die Anzahl der Checks und unternimmst was, wenn die Anzahl kleiner als 2 ist.
    Wenn was zu tun ist, testest Du die Arrayelemente und rufst bei True den kommunizierenden Button auf.
    Feddich. :D
    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!
    OK Danke, Problem a hab ich gelöst, guter Hinweis mit dem Array.

    Für Problem b fehlt mir noch ein logischer Ablauf, ich weiß zwar anhand des Arrays welche True sind aber wie ich das nun logisch in Click verwandel ?(

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

    kollimann schrieb:

    aber wie ich das nun logisch in Click verwandel
    Was meinst Du damit?
    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!
    Ich hab es jetzt mal so gelöst, es funktioniert ! Ich finde es zwar irgendwie umständlich, aber wenn es tut was es soll...

    VB.NET-Quellcode

    1. 'Timer, wenn Tick, nächsten Button klicken wenn entsprechende Checkbox aktiv/true ist
    2. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    3. 'hier schauen welcher Button war zuletzt geklickt, also nächsten Button klicken WENN die entsprechende Checkbox true ist
    4. Select CurrentColorButton
    5. Case ColorButton.Button1
    6. If chkb_aktiv(2) = True Then
    7. Button2.PerformClick()
    8. ElseIf chkb_aktiv(3) = True Then
    9. Button3.PerformClick()
    10. ElseIf chkb_aktiv(4) = True Then
    11. Button4.PerformClick()
    12. ElseIf chkb_aktiv(5) = True Then
    13. Button5.PerformClick()
    14. ElseIf chkb_aktiv(6) = True Then
    15. Button6.PerformClick()
    16. ElseIf chkb_aktiv(7) = True Then
    17. Button7.PerformClick()
    18. ElseIf chkb_aktiv(8) = True Then
    19. Button8.PerformClick()
    20. End If
    21. Case ColorButton.Button2
    22. If chkb_aktiv(3) = True Then
    23. Button3.PerformClick()
    24. ElseIf chkb_aktiv(4) = True Then
    25. Button4.PerformClick()
    26. ElseIf chkb_aktiv(5) = True Then
    27. Button5.PerformClick()
    28. ElseIf chkb_aktiv(6) = True Then
    29. Button6.PerformClick()
    30. ElseIf chkb_aktiv(7) = True Then
    31. Button7.PerformClick()
    32. ElseIf chkb_aktiv(8) = True Then
    33. Button8.PerformClick()
    34. ElseIf chkb_aktiv(1) = True Then
    35. Button1.PerformClick()
    36. End If
    37. Case ColorButton.Button3
    38. If chkb_aktiv(4) = True Then
    39. Button4.PerformClick()
    40. ElseIf chkb_aktiv(5) = True Then
    41. Button5.PerformClick()
    42. ElseIf chkb_aktiv(6) = True Then
    43. Button6.PerformClick()
    44. ElseIf chkb_aktiv(7) = True Then
    45. Button7.PerformClick()
    46. ElseIf chkb_aktiv(8) = True Then
    47. Button8.PerformClick()
    48. ElseIf chkb_aktiv(1) = True Then
    49. Button1.PerformClick()
    50. ElseIf chkb_aktiv(2) = True Then
    51. Button2.PerformClick()
    52. End If
    53. 'usw usw usw bis Button8
    54. End Select
    55. End Sub
    56. 'die 8 Button
    57. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    58. CurrentColorButton = ColorButton.Button1 'Setzen, welcher Button wurde geklickt
    59. End Sub
    60. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    61. CurrentColorButton = ColorButton.Button2 'Setzen, welcher Button wurde geklickt
    62. End Sub
    63. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    64. CurrentColorButton = ColorButton.Button3 'Setzen, welcher Button wurde geklickt
    65. End Sub
    66. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    67. CurrentColorButton = ColorButton.Button4 'Setzen, welcher Button wurde geklickt
    68. End Sub
    69. 'usw usw usw Bis Button 8
    70. 'Checkboxen
    71. Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    72. If CheckBox1.Checked = True Then
    73. chkb_aktiv(1) = True
    74. count += 1
    75. Else
    76. chkb_aktiv(1) = False
    77. count -= 1
    78. End If
    79. checkbox_count(1)
    80. End Sub
    81. Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
    82. If CheckBox2.Checked = True Then
    83. chkb_aktiv(2) = True
    84. count += 1
    85. Else
    86. chkb_aktiv(2) = False
    87. count -= 1
    88. End If
    89. checkbox_count(2)
    90. End Sub
    91. Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged
    92. If CheckBox3.Checked = True Then
    93. chkb_aktiv(3) = True
    94. count += 1
    95. Else
    96. chkb_aktiv(3) = False
    97. count -= 1
    98. End If
    99. checkbox_count(3)
    100. End Sub
    101. 'usw usw usw bit Checkbox 8
    102. Public Sub checkbox_count(ID As Integer)
    103. If count < 2 Then
    104. Select Case ID
    105. Case 1
    106. CheckBox1.Checked = True
    107. Case 2
    108. CheckBox2.Checked = True
    109. Case 3
    110. CheckBox3.Checked = True
    111. Case 4
    112. CheckBox4.Checked = True
    113. Case 5
    114. CheckBox5.Checked = True
    115. Case 6
    116. CheckBox6.Checked = True
    117. Case 7
    118. CheckBox7.Checked = True
    119. Case 8
    120. CheckBox8.Checked = True
    121. End Select
    122. End If
    123. Me.Text = count
    124. End Sub
    Wo ist das Array ? Und wenn es auftaucht, mach mit .ToList eine Liste draus, die bietet mehr möglichkeiten.