Checkboxen und Labels Problem!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    Checkboxen und Labels Problem!

    Moin! :)
    Ich habe eine WinForm, mit 4 Labels und 4 Checkboxen.
    Wenn man die Checkbox aktiviert, soll das Label einen Text bekommen, zum Beispiel „Fertig!“.
    Wenn nun die Checkbox aktiv ist, und die Labels einen Text haben. Möchte ich die Schleife verlassen, und anschließend eine MSGBOX ausgeben, dass alles fertig ist.
    Ich hoffe, dass ich mein Problem gut erklärt habe,
    und mir jemand helfen kann!
    BIG THX

    edit:
    Dateianhang gelöscht....
    Visual Basic.NET 8o
    MS-SQL
    8o

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

    Dafuq? Dein Code gibt nicht viel her, aber: Ne Do-Loop-Schleife? Ggf. noch ne Endlosschleife? Warum nicht einfach ein: Wenn jedes Label nicht den Sollwert hat, dann Exit Sub. Und sonst eben MessageBox. Und bitte auch MessageBox.Show, nicht MsgBox (=VB6)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Langt da nicht ne Prüfung im CheckedChanged event?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim aktiv As Integer
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. VorgangBeendet()
    6. Do
    7. If Me.CheckBox1.Checked Then
    8. If Not Me.Label20.Text = "" Then
    9. aktiv += 1
    10. End If
    11. End If
    12. If Me.CheckBox6.Checked Then
    13. If Not Me.Label1.Text = "" Then
    14. aktiv += 1
    15. End If
    16. End If
    17. If Me.CheckBox9.Checked Then
    18. If Not Me.Label2.Text = "" Then
    19. aktiv += 1
    20. End If
    21. End If
    22. If Me.CheckBox12.Checked Then
    23. If Not Me.Label3.Text = "" Then
    24. aktiv += 1
    25. End If
    26. End If
    27. If CheckeZahl = aktiv Then
    28. Exit Do
    29. End If
    30. Loop
    31. MsgBox("OK!")
    32. ' reseten...
    33. aktiv = 0
    34. Me.Label20.Text = ""
    35. Me.Label1.Text = ""
    36. Me.Label2.Text = ""
    37. Me.Label3.Text = ""
    38. End Sub
    39. Sub VorgangBeendet()
    40. If CheckBox1.Checked Then
    41. Label20.Text = "Fertig!"
    42. End If
    43. If CheckBox6.Checked Then
    44. Label1.Text = "Fertig!"
    45. End If
    46. If CheckBox9.Checked Then
    47. Label2.Text = "Fertig!"
    48. End If
    49. If CheckBox12.Checked Then
    50. Label3.Text = "Fertig!"
    51. End If
    52. End Sub
    53. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    54. Label4.Text = CheckeZahl.ToString
    55. End Sub
    56. Dim CheckeZahl As Integer = 0
    57. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    58. If CheckBox1.Checked Then
    59. CheckeZahl += 1
    60. Else
    61. CheckeZahl -= 1
    62. End If
    63. End Sub
    64. Private Sub CheckBox6_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox6.CheckedChanged
    65. If CheckBox6.Checked Then
    66. CheckeZahl += 1
    67. Else
    68. CheckeZahl -= 1
    69. End If
    70. End Sub
    71. Private Sub CheckBox9_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox9.CheckedChanged
    72. If CheckBox9.Checked Then
    73. CheckeZahl += 1
    74. Else
    75. CheckeZahl -= 1
    76. End If
    77. End Sub
    78. Private Sub CheckBox12_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox12.CheckedChanged
    79. If CheckBox12.Checked Then
    80. CheckeZahl += 1
    81. Else
    82. CheckeZahl -= 1
    83. End If
    84. End Sub
    85. End Class


    Ich glaube das Problem habe ich nun gelöst. :P
    Schaut euch mal bitte den Code an!
    Ist der Code gut und geht es auch bei euch?
    BIG THX


    Visual Basic.NET 8o
    MS-SQL
    8o

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

    Wenn ich jetzt ckbox6 auf true setze ist im Label20 kein Text sondern im label1. also gibt es kein exit do
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ich weiß immer noch nicht, was die Do/Loop Schleife für einen Sinn hat. Auch der Sinn des Timers erschließt sich mir nicht.

    Am Ende geht es doch darum das man die Checkboxen anklicken muss. Warum also nicht dort direkt (CheckedChanged Event) ansetzen?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Cheffboss schrieb:

    VB.NET-Quellcode

    1. If Not Me.Label20.Text = "" Then
    machst Du

    VB.NET-Quellcode

    1. If Not String.IsNullOrEmpty(Me.Label20.Text) Then
    Besser wäre es, nicht den Inhalt von Labels als Kennung zu nehmen, sondern eine Boolean Variable.
    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!
    @mrMo
    Das mit der Do/Loop Schleife und der Timer,
    macht hier im Beispielcode keinen Sinn!
    Aber in meiner Endanwendung gibt es einen Sinn.
    Dies war nur ein kleines Beispiel, was und wo mein Problem ist.

    @an alle
    Vielen Dank, für eure Hilfe.
    Das Problem ist nun gelöst!
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Das mit der Do/Loop Schleife und der Timer,
    macht hier im Beispielcode keinen Sinn!
    Aber in meiner Endanwendung gibt es einen Sinn.


    Aha, na wenn du meinst. Ich bin mir da nicht so sicher, da dein "echter" Code ja einem ähnlichen Konzept folgen muss.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich bin mir ganz sicher dass das viel kürzer gemacht werden kann aber ich habe mir deine code nur kurz angeschaut.Du brauchst keine 4 checked change events.mach es so:

    VB.NET-Quellcode

    1. Private Sub CheckBoxes_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged, Handles CheckBox2.CheckedChanged, Handles CheckBox3.CheckedChanged, Handles CheckBox4.CheckedChanged
    2. sender // ist die checked box die changed wurde.
    3. End Sub

    Hier könnte meine Signatur stehen.
    @mox Mach es wenigstens richtig.
    @Cheffboss mox meint so was:

    VB.NET-Quellcode

    1. Private Sub CheckBoxes_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged
    2. If sender Is CheckBox1 Then
    3. ' was für CB1 tun
    4. Else If sender Is CheckBox1 Then
    5. ' was für CB2 tun
    6. Else If sender Is CheckBox1 Then
    7. ' was für CB3 tun
    8. Else If sender Is CheckBox1 Then
    9. ' was für CB4 tun
    10. End If
    11. End Sub
    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!
    @RodFromGermany: Ohne Deinen Kommentar an mox gegen Dich verwenden zu wollen: Bei Dir steht überall CheckBox1.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.