Checkedlistbox c как проверить выбранные элементы
Элемент CheckedListBox представляет симбиоз компонентов ListBox и CheckBox. Для каждого элемента такого списка определено специальное поле CheckBox, которое можно отметить.
Все элементы задаются в CheckedListBox задаются в свойстве Items . Также, как и для элементов ListBox и ComboBox, мы можем задать набор элементов. По умолчанию для каждого добавляемого нового элемента флажок не отмечен:

Чтобы поставить отметку в checkBox рядом с элементом в списке, нам надо сначала выделить элемент и дополнительным щелчком уже установить флажок. Однако это не всегда удобно, и с помощью свойства CheckOnClick и установке для него значения true мы можем определить сразу выбор элемента и установку для него флажка в один клик.
Другое свойство MultiColumn при значении true позволяет сделать многоколоночный список, если элементы не помещаются по длине:

Выделенный элемент мы также можем получить с помощью свойства SelectedItem , а его индекс — с помощью свойства SelectedIndex . Но это верно только, если для свойства SelectionMode установлено значение One , что подразумевает выделение только одного элемента.
При установке для свойства SelectionMode значений MultiSmple и MultiExtended можно выбрать сразу несколько элементов, и тогда все выбранные элементы будут доступны в свойстве SelectedItems , а их индексы — в свойстве SelectedIndeces .
И поскольку мы можем поставить отметку не для всех выбранных элементов, то чтобы отдельно получить отмеченные элементы, у CheckedListBox имеются свойства CheckedItems и CheckedIndices .
Для добавления и удаления элементов в CheckedListBox определены все те же методы, что и в LstBox:
- Add(item) : добавляет один элемент
- AddRange(array) : добавляет в список массив элементов
- Insert(index, item) : добавляет элемент по определенному индексу
- Remove(item) : удаляет элемент
- RemoveAt(index) : удаляет элемент по определенному индексу
- Clear() : полностью очищает список
SetItemChecked и SetItemCheckState
К особенностям элемента можно отнести методы SetItemChecked и SetItemCheckState . Метод SetItemChecked позволяет установить или сбросить отметку на одном из элементов. А метод SetItemCheckState позволяет установить флажок в одно из трех состояний: Checked (отмечено), Unchecked (неотмечено) и Indeterminate (промежуточное состояние):
checkedListBox1.SetItemChecked(0, true); checkedListBox1.SetItemCheckState(1, CheckState.Indeterminate);
Как программно проверить элемент в CheckedListBox в C#?
У меня есть CheckedListBox, и я хочу автоматически отметить один из элементов в нем.
Коллекция CheckedItems не позволяет добавлять в него что-то.
Есть какие-нибудь предложения?
Поделиться Источник 16 декабря 2008 в 09:45
6 ответов
Вам нужно вызвать SetItemChecked с соответствующим элементом.
В документации для CheckedListBox.ObjectCollection есть пример, который проверяет каждый другой элемент в коллекции.
Поделиться 16 декабря 2008 в 09:48
Вот как вы можете выбрать/вставить или отменить выбор/отменить выбор всех элементов сразу:
private void SelectAllCheckBoxes(bool CheckThem) < for (int i = 0; i else < checkedListBox1.SetItemCheckState(i, CheckState.Unchecked); >> >
Поделиться 19 июля 2012 в 18:27
В моей программе я использовал следующий трюк:
CheckedListBox.SetItemChecked(CheckedListBox.Items.IndexOf(Item),true);
Как все работает:
SetItemChecked(int index, bool value) — это метод, который устанавливает точное состояние, отмеченное для конкретного элемента. Вам нужно указать индекс элемента, который вы хотите отметить ( использовать метод IndexOf, в качестве аргумента укажите текст элемента ) и состояние, отмеченное ( true означает, что элемент отмечен, false не отмечен ).
Этот метод проходит по всем элементам в CheckedListBox и проверяет ( или отменяет проверку ) тот, который имеет указанный индекс.
Например, короткий кусок моего кода — цикл FOREACH проходит через указанные имена программ, и если программа содержится в CheckedLitBox ( CLB. ), проверяет его:
string[] ProgramNames = sel_item.SubItems[2].Text.Split(';'); foreach (string Program in ProgramNames)
Поделиться 24 ноября 2015 в 20:30
Предположим, вы хотите проверить элемент при нажатии кнопки.
private void button1_Click(object sender, EventArgs e)
Где itemIndex — это индекс элемента, который нужно проверить, он начинается с 0.
Поделиться 25 января 2015 в 01:30
string[] aa = new string[] ; foreach (string a in aa)
Теперь код, где вы хотите проверить все:
private void button5_Click(object sender, EventArgs e)
Чтобы снять все:
private void button_Click(object sender, EventArgs e)
Поделиться 13 февраля 2015 в 03:50
Я использую расширение:
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)); > >
Checkedlistbox c как проверить выбранные элементы
Элемент ListBox представляет собой простой список. Ключевым свойством этого элемента является свойство Items , которое как раз и хранит набор всех элементов списка.
Элементы в список могут добавляться как во время разработки, так и программным способом. В Visual Studio в окне Properties (Свойства) для элемента ListBox мы можем найти свойство Items. После двойного щелчка на свойство нам отобразится окно для добавления элементов в список:

В пустое поле мы вводим по одному элементу списка — по одному на каждой строке. После этого все добавленные нами элементы окажутся в списке, и мы сможем ими управлять:

Программное управление элементами в ListBox
Добавление элементов
Итак, все элементы списка входят в свойство Items , которое представляет собой коллекцию. Для добавления нового элемента в эту коллекцию, а значит и в список, надо использовать метод Add, например: listBox1.Items.Add(«Новый элемент»); . При использовании этого метода каждый добавляемый элемент добавляется в конец списка.
Можно добавить сразу несколько элементов, например, массив. Для этого используется метод AddRange :
string[] countries = < "Бразилия", "Аргентина", "Чили", "Уругвай", "Колумбия" >; listBox1.Items.AddRange(countries);
Вставка элементов
В отличие от простого добавления вставка производится по определенному индексу списка с помощью метода Insert :
listBox1.Items.Insert(1, "Парагвай");
В данном случае вставляем элемент на вторую позицию в списке, так как отсчет позиций начинается с нуля.
Удаление элементов
Для удаления элемента по его тексту используется метод Remove :
listBox1.Items.Remove("Чили");
Чтобы удалить элемент по его индексу в списке, используется метод RemoveAt :
listBox1.Items.RemoveAt(1);
Кроме того, можно очистить сразу весь список, применив метод Clear :
listBox1.Items.Clear();
Доступ к элементам списка
Используя индекс элемента, можно сам элемент в списке. Например, получим первый элемент списка:
string firstElement = listBox1.Items[0];
Свойство Count возвращает количество элементов в списке:
int number = listBox1.Items.Count;
Выделение элементов списка
При выделении элементов списка мы можем ими управлять как через индекс, так и через сам выделенный элемент. Получить выделенные элементы можно с помощью следующих свойств элемента ListBox:
- SelectedIndex : возвращает или устанавливает номер выделенного элемента списка. Если выделенные элементы отсутствуют, тогда свойство имеет значение -1
- SelectedIndices : возвращает или устанавливает коллекцию выделенных элементов в виде набора их индексов
- SelectedItem: возвращает или устанавливает текст выделенного элемента
- SelectedItems : возвращает или устанавливает выделенные элементы в виде коллекции
По умолчанию список поддерживает выделение одного элемента. Чтобы добавить возможность выделения нескольких элементов, надо установить у его свойства SelectionMode значение MultiSimple .
Чтобы выделить элемент програмно, надо применить метод SetSelected(int index, bool value) , где index — номер выделенного элемента. Если второй параметр — value имеет значение true , то элемент по указанному индексу выделяется, если false , то выделение наоборот скрывается:
listBox1.SetSelected(2, true); // будет выделен третий элемент
Чтобы снять выделение со всех выделенных элементов, используется метод ClearSelected .
Событие SelectedIndexChanged
Из всех событий элемента ListBox надо отметить в первую очередь событие SelectedIndexChanged , которое возникает при изменении выделенного элемента:
public partial class Form1 : Form < public Form1() < InitializeComponent(); string[] countries = < "Бразилия", "Аргентина", "Чили", "Уругвай", "Колумбия" >; listBox1.Items.AddRange(countries); listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged; > void listBox1_SelectedIndexChanged(object sender, EventArgs e) < string selectedCountry = listBox1.SelectedItem.ToString(); MessageBox.Show(selectedCountry); >>
В данном случае по выбору элемента списка будет отображаться сообщение с выделенным элементом.
Практическое руководство. Определение отмеченных элементов в элементе управления CheckedListBox в Windows Forms
При представлении данных в элементе управления CheckedListBox Windows Forms можно выполнить итерацию по коллекции, хранящейся в свойстве CheckedItems, или выполнить пошаговый просмотр списка с помощью метода GetItemChecked, чтобы определить, какие элементы отмечены. Метод GetItemChecked принимает порядковый номер элемента в качестве аргумента и возвращает true или false . Вопреки тому, что можно было бы ожидать, свойства SelectedItems и SelectedIndices не определяют, какие элементы отмечены, они определяют, какие элементы выделены.
Определение отмеченных элементов в элементе управления CheckedListBox
- Выполните итерацию по коллекции CheckedItems, начиная с 0, так как нумерация в коллекциях начинается с нуля. Обратите внимание, что этот метод возвращает номер элемента в списке отмеченных элементов, а не в общем списке. Поэтому если первый элемент в списке не отмечен, а второй — отмечен, приведенный ниже код отобразит текст вида «Checked Item 1 = MyListItem2».
' Determine if there are any items checked. If CheckedListBox1.CheckedItems.Count <> 0 Then ' If so, loop through all checked items and print results. Dim x As Integer Dim s As String = "" For x = 0 To CheckedListBox1.CheckedItems.Count - 1 s = s & "Checked Item " & (x + 1).ToString & " = " & CheckedListBox1.CheckedItems(x).ToString & ControlChars.CrLf Next x MessageBox.Show(s) End If
// Determine if there are any items checked. if(checkedListBox1.CheckedItems.Count != 0) < // If so, loop through all checked items and print results. string s = ""; for(int x = 0; x < checkedListBox1.CheckedItems.Count ; x++) < s = s + "Checked Item " + (x+1).ToString() + " = " + checkedListBox1.CheckedItems[x].ToString() + "\n"; >MessageBox.Show(s); >
// Determine if there are any items checked. if(checkedListBox1->CheckedItems->Count != 0) < // If so, loop through all checked items and print results. String ^ s = ""; for(int x = 0; x < checkedListBox1->CheckedItems->Count; x++) < s = String::Concat(s, "Checked Item ", (x+1).ToString(), " = ", checkedListBox1->CheckedItems[x]->ToString(), "\n"); > MessageBox::Show(s); >
Dim i As Integer Dim s As String s = "Checked Items:" & ControlChars.CrLf For i = 0 To (CheckedListBox1.Items.Count - 1) If CheckedListBox1.GetItemChecked(i) = True Then s = s & "Item " & (i + 1).ToString & " = " & CheckedListBox1.Items(i).ToString & ControlChars.CrLf End If Next MessageBox.Show(s)
int i; string s; s = "Checked items:\n" ; for (i = 0; i > MessageBox.Show (s);
int i; String ^ s; s = "Checked items:\n" ; for (i = 0; i Items->Count-1); i++) < if (checkedListBox1->GetItemChecked(i)) < s = String::Concat(s, "Item ", (i+1).ToString(), " = ", checkedListBox1->Item[i]->ToString(), "\n"); > > MessageBox::Show(s);
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.