Определить все выбранные элементы listbox C#
Есть листбокс с месяцами. Нужно в цикле пройтись и определить какие месяца выбраны (свойство на несколько элементов включено). Как построить проверку?
Дополнен 4 года назад
Пробовал сделать так, но он срабатывает только на первый выбранный элемент. на остальные не реагирует.
sqlPar = null;
ch = false;
for (i = 0; i if (this.MonthLB.SelectedIndex == i)
if (!ch)
sqlPar = «MONTH(a.datepriem) OR MONTH(a.datepriem) container-for-answers»>
Голосование за лучший ответ
listBox.SelectedItems
upd:listBox1.SelectedIndices индексы выбранных элементов
Артем СоболевУченик (195) 4 года назад
Можно подробней как этим методом пользоваться?
я с помощью цикла определяю какие месяца выбраны, чтобы сформировать условие SQL запроса.
diablo Мыслитель (7019) foreach (object s_item in listBox1.SelectedItems) MessageBox.Show(s_item.ToString());
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 в 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, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
WPF. C#. Как узнать, какой элемент выделен в ListBox, если список стилизован?
ClientsOnlineList — Список. Содержит поля UserName, id и т.д. Как мне при выделении списка- узнать- какой именно ClientsOnlineList.Id был выделен? Так как список стилизованный- я потерялся в связях и как узнать выделенный элемент?
Отслеживать
задан 21 окт 2016 в 23:21
Rakzin Roman Rakzin Roman
5,700 12 12 золотых знаков 79 79 серебряных знаков 176 176 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Создайте свойство (тип вы сами знаете) CurrentClient и привяжете его к SelectedItem выбор в ListBox будет доступен через это свойство.
/// /// Это коллекция для заполнения ListBox /// private ObservableCollection _Animals; public ObservableCollection Animals < get < return _Animals; >set < if (_Animals == value) return; _Animals = value; PropertyChanged(this, new PropertyChangedEventArgs(nameof(Animals))); >> /// /// Текущее выбранное животное в ListBox /// private Animal _CurrentAnimal; public Animal CurrentAnimal < get < return _CurrentAnimal; >set < if (_CurrentAnimal == value) return; _CurrentAnimal = value; PropertyChanged(this, new PropertyChangedEventArgs(nameof(CurrentAnimal))); >>
" SelectedItem=""/>