Перебирать CheckedListBox в WinForms? - PullRequest
4 голосов
/ 02 февраля 2010

Если у меня есть флажок «Проверено» в формах Win, которые я заполняю следующим образом

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

Как я могу перебирать tasksCheckedListBox.Items и устанавливать некоторые флажки как отмеченные?

Спасибо

Ответы [ 2 ]

6 голосов
/ 02 февраля 2010

Метод add принимает необязательный параметр IsChecked. Затем вы можете добавить свои объекты в проверенный список в правильном состоянии.

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

Или вы можете изменить проверенное состояние элемента после добавления его следующим образом:

foreach(var task in tasks)
{
    tasksCheckedListBox.SetItemChecked(clb.Items.IndexOf(task), isChecked);
}
3 голосов
/ 02 февраля 2010

Если вы хотите сделать это после добавления элементов, есть пример на MSDN

Скопировано здесь:

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;
}
...