Alle Checkboxen auf einmal abfragen..

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von dognose.

    Alle Checkboxen auf einmal abfragen..

    Hallo Forengemeinde,
    ich bin gerade auf der Suche nach einer möglichkeit, alle checkboxen auf einem Formular "At-Once" Abzufragen.
    Hintergrund: Es gibt verschiedene Auswahlmöglichkeiten, und je nach "tick" soll ein array angepasst werden, also ein wert hinzu, oder weg.
    Die zu verwendenden Werte lagern in einer Collection deren "Keys" jeweils dem checkbox namen entsprechen, daher dachte ich an sowas hier:

    VB.NET-Quellcode

    1. Dim cb As CheckBox
    2. For Each cb In Me.Controls
    3. If cb.Checked = True Then
    4. files(files.Length) = trans_col(cb.Name)
    5. End If
    6. Next

    wobei files das array ist, wo die werte rein sollen und trans_col die collection wo sie herkommen (vordefiniert)
    Dummerweise erhalte ich beim Programmausführen dann eine exception, die da heisst:
    Das Objekt des Typs System.Windows.Forms.GroupBox kann nicht in Typ System.Windows.Forms.CheckBox umgewandelt werden.
    und eben das verstehe ich nicht, weil ich doch durch die ForEach Schleife auch nur elemente vom Typ "checkbox" prüfe... ?(
    ps.: Warum kann man hier eig. keine Absätze machen ;(
    Danke für die Schnelle Antwort.
    Allerdings scheint dieses Abfrage immer false zu liefern, wenn ich

    VB.NET-Quellcode

    1. Dim cb As CheckBox
    2. For Each Control In Me.Controls
    3. If TypeOf Control Is CheckBox Then
    4. If cb.Checked = True Then
    5. files(files.Length) = trans_col(cb.Name)
    6. End If
    7. End If
    8. Next

    oder

    VB.NET-Quellcode

    1. Dim cb As CheckBox
    2. For Each cb In Me.Controls
    3. If TypeOf Control Is CheckBox Then
    4. If cb.Checked = True Then
    5. files(files.Length) = trans_col(cb.Name)
    6. End If
    7. End If
    8. Next

    verwende ...
    okay, mit

    VB.NET-Quellcode

    1. For Each Control In GroupBox2.Controls
    2. If TypeOf Control Is CheckBox Then
    3. If Control.Checked = True Then
    4. 'XXX'
    5. count = count + 1
    6. End If
    7. End If
    8. Next

    gibt die funktion dann auch true :) Wusste nicht, dass die Groupboxen seperat gehandelt werden. (sind ja gewissermasen auch in Me.Controls)
    Allerdings habe ich ein weiteres Problem. Das Array "files" war wie folgt deklariert

    VB.NET-Quellcode

    1. dim files() as integer/*[hier soll n umbruch sien, keine ahung warum der verschwindet]*/files = new integer() {1,2,3,4,5,...}




    nachdem ich nun - für diesen Vorgang

    VB.NET-Quellcode

    1. erase files

    genutzt habe, kann ich (scheinbar) das array nicht via

    VB.NET-Quellcode

    1. array(grenze) 

    bestücken. Ein Redim ermöglicht dies wieder, macht aber weniger sinn, da ich die grenze (noch) nicht kenne...