4 Stimmen

Iterieren durch CheckedListBox in WinForms?

Wenn ich in Win-Formularen ein angekreuztes Listenfeld habe, das ich wie folgt ausfülle

List<Tasks> tasks = db.GetAllTasks();
        foreach (var t in tasks)
            tasksCheckedListBox.Items.Add(t.Name);

Wie kann ich tasksCheckedListBox.Items iterieren und einige Kontrollkästchen als markiert markieren?

Danke

6voto

Jake Pearson Punkte 25753

Die Methode add benötigt einen optionalen Parameter IsChecked. Sie können dann Ihre Objekte im richtigen Zustand in das angekreuzte Listenfeld einfügen.

List<Tasks> tasks = db.GetAllTasks();
        foreach (var t in tasks)
            tasksCheckedListBox.Items.Add(t.Name, isChecked);

Oder Sie können den Status eines Objekts nach dem Hinzufügen ändern, z. B. so:

foreach(var task in tasks)
{
    tasksCheckedListBox.SetItemChecked(clb.Items.IndexOf(task), isChecked);
}

3voto

Lenny Sirivong Punkte 991

Wenn Sie dies nach dem Hinzufügen der Elemente tun möchten, finden Sie ein Beispiel auf MSDN

Hier kopiert:

private void CheckEveryOther_Click(object sender, System.EventArgs e) {
    // Cycle through every item and check every other.

    // Set flag to true to know when this code is being executed. Used in the ItemCheck
    // event handler.
    insideCheckEveryOther = true;

    for (int i = 0; i < checkedListBox1.Items.Count; i++) {
        // For every other item in the list, set as checked.
        if ((i % 2) == 0) {
            // But for each other item that is to be checked, set as being in an
            // indeterminate checked state.
            if ((i % 4) == 0)
                checkedListBox1.SetItemCheckState(i, CheckState.Indeterminate);
            else
                checkedListBox1.SetItemChecked(i, true);
        }
    }        

    insideCheckEveryOther = false;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X