Announcement

Collapse
No announcement yet.

CheckedListBox mit Select Case

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CheckedListBox mit Select Case

    Hallo, ich bin ein ziemlicher Vb.net neuling und möchte eine CheckedListBox mit einer Select Case abfrage kombinieren. Weis aber nicht recht wie das funktioniert.
    Also ich habe in meiner Checked List Box 5 Einträge und möchte es so gestallten, wenn einer der 5 Einträge gewählt wurde eine Textbox auf enabled gesetzt wird.

    Hoffe mir kann einer weiter helfen

    Edit: Habe das Problem nun mit :

    Private Sub CheckedListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles CheckedListBox2.ItemCheck
    TextBox1.Enabled = True
    End Sub

    Gelöst.

    Problem ist nun nur, das wenn der Benutzer den Hacken wieder entfernt auch die TextBox wieder auf Disabled gestzt wird.

    Ach und ich muss trotzdem Überprüfen welche Items auf Check gesetzt sind damit ich später eine Auswertung durchführen kann
    Zuletzt editiert von Vertax; 30.05.2008, 18:05.

  • #2
    Hallo Vertax,

    CheckedListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles CheckedListBox2.ItemCheck

    Funktioniert aber nur, weil/wenn du CheckOnClick auf True hast.

    Für den Zugriff zur Auswertung schaue doch in der MSDN unter folgenden Begriffen in Verbindung mit CheckedListBox:

    - CheckedIndices
    - CheckedItems
    - GetItemCheckState
    - GetItemChecked

    Um einen Art Wechselschalter zu erstellen kannst du ein faches IF ... THEN ... ELSE - Konstrukt verwenden. Dort hast du die Möglichkeit einer verzweigten Anweisung.

    If Bedingung erfüllt Then mache diese
    Else If Bedingung nicht erfüllt, mache das

    Also je nach dem wie die Bedingung erfüllt wird, wird immer nur der Then oder Else-Zweig beschritten.

    Code:
            If TextBox1.Enabled = True Then
                TextBox1.Enabled = False
            Else
                TextBox1.Enabled = True
            End If
    Um die Textbox nur auszuschalten, wenn keine der Checkboxen aktiviert ist, wirst du die Bedingung aber erweitern müssen, indem du mit den oben genannten Methoden prüfst, ob ein Objekt in der Liste Checked oder nicht Checked ist. So gibt z.b. die Methode CheckedItems eine Liste der Objekte zurück, die mit den Checkboxen gefüllt ist, welche Checked sind. Dort könnte man nun die Anzahl der Items in der Liste auswerten um zu erfahren, ob überhaupt Checkboxen aktiviert sind. Wenn nicht, ist die List leer.

    Code:
            If TextBox1.Enabled = True And CheckedListBox1.CheckedItems.Count = 0 Then
                TextBox1.Enabled = False
            Else
                TextBox1.Enabled = True
            End If
    Auf das Select ...Case bin ich jetzt nicht eingegangen. Versuche doch bei einer deiner nächsten Fragen mal besser zu beschreiben, was du erreichen möchtest. So ist z.B. auch die Auswertung abhängig von der Lebensdauer des Objektes oder zu welchem Zeitpunkt ausgewertet werden soll.

    mfg laptel

    Comment


    • #3
      Danke, dein Tip hat mir weiter geholfen. Doch nun stehe ich vor einem weiteren Problem. Ich realisiere dies über

      Code:
       Private Sub CheckedListBox2ItemCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles CheckedListBox2.ItemCheck
              If TextBox1.Enabled = True And CheckedListBox2.CheckedItems.Count = 0 Then
                  TextBox1.Enabled = False
              Else
                  TextBox1.Enabled = True
              End If
          End Sub
      Da aber der Check zustand erst nach beendigung der Sub geändert wird Is ein Count von 0 nicht mehr möglich, da die Count abfrage nach dem ItemCheck Event nicht mehr möglich ist. Das bedeutet auch wenn kein Kästchen mehr Checked ist, bleibt die Textbox auf enabled

      Comment


      • #4
        Hallo Vertax,

        ändere doch mal das Handle in SelectedIndexChanged

        Code:
            Private Sub CheckedListBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckedListBox2.SelectedIndexChanged
                If TextBox1.Enabled = True And CheckedListBox2.CheckedItems.Count = 0 Then
                    TextBox1.Enabled = False
                Else
                    TextBox1.Enabled = True
                End If
            End Sub
        dann sollte es funktionieren.

        mfg laptel

        Comment

        Working...
        X