Как программно проверить элемент в CheckedListBox в C #? - PullRequest
47 голосов
/ 16 декабря 2008

У меня есть CheckedListBox, и я хочу автоматически отметить один из элементов в нем.

Коллекция CheckedItems не позволяет вам добавлять вещи в нее.

Есть предложения?

Ответы [ 6 ]

72 голосов
/ 16 декабря 2008

Вам необходимо позвонить SetItemChecked с соответствующим пунктом.

Документация для CheckedListBox.ObjectCollection содержит пример, который проверяет все остальные элементы в коллекции.

21 голосов
/ 19 июля 2012

Вот как вы можете выбрать / поставить галочку или снять / убрать галочку со всех элементов одновременно:

private void SelectAllCheckBoxes(bool CheckThem) {
    for (int i = 0; i <= (checkedListBox1.Items.Count - 1); i++) {
        if (CheckThem)
        {
            checkedListBox1.SetItemCheckState(i, CheckState.Checked);
        }
        else
        {
            checkedListBox1.SetItemCheckState(i, CheckState.Unchecked);
        }
    }  
}
7 голосов
/ 24 ноября 2015

В моей программе я использовал следующий трюк:

CheckedListBox.SetItemChecked(CheckedListBox.Items.IndexOf(Item),true);

Как все работает:
SetItemChecked (int index, bool value) - это метод, который устанавливает точное проверенное состояние для определенного элемента. Необходимо указать индекс элемента, который вы хотите проверить ( использовать метод IndexOf, в качестве аргумента указать текст элемента ) и проверенное состояние ( true означает, что элемент проверен, ложь не проверена ).
Этот метод запускает все элементы в CheckedListBox и проверяет ( или снимает флажок ) элемент с указанным индексом.
Например, короткий фрагмент моего кода - цикл FOREACH проходит по указанным именам программ, и, если программа содержится в CheckedLitBox ( CLB ... ), проверяет его:

string[] ProgramNames = sel_item.SubItems[2].Text.Split(';');
foreach (string Program in ProgramNames)
{
    if (edit_mux.CLB_ContainedPrograms.Items.Contains(Program))
        edit_mux.CLB_ContainedPrograms.SetItemChecked(edit_mux.CLB_ContainedPrograms.Items.IndexOf(Program), true);
}
4 голосов
/ 25 января 2015

Предположим, вы хотите проверить элемент при нажатии кнопки.

private void button1_Click(object sender, EventArgs e)
{
    checkedListBox1.SetItemChecked(itemIndex, true);
}

Где itemIndex - индекс проверяемого элемента, он начинается с 0.

3 голосов
/ 13 февраля 2015

Использование:

string[] aa = new string[] {"adiii", "yaseen", "salman"};
foreach (string a in aa)
{
    checkedListBox1.Items.Add(a);
}

Теперь код, где вы хотите проверить все:

private void button5_Click(object sender, EventArgs e)
{
    for(int a=0; a<checkedListBox1.Items.Count; a++)
        checkedListBox1.SetItemChecked(a, true);
}

Чтобы снять все отметки:

private void button_Click(object sender, EventArgs e)
{
    for(int a=0; a<checkedListBox1.Items.Count; a++)
        checkedListBox1.SetItemChecked(a, false);
}
2 голосов
/ 17 августа 2017

Я использую расширение:

public static class CheckedListBoxExtension
{
    public static void CheckAll(this CheckedListBox listbox)
    {
        Check(listbox, true);
    }

    public static void UncheckAll(this CheckedListBox listbox)
    {
        Check(listbox, false);
    }

    private static void Check(this CheckedListBox listbox, bool check)
    {
        Enumerable.Range(0, listbox.Items.Count).ToList().ForEach(x => listbox.SetItemChecked(x, check));
    }
}
...