Как программно выделить строку в listbox?
В этой небольшой статье хотелось бы показать на простом примере, как можно программно выделить строку в listBox. И так, сначала создадим Windows Forms приложение, а затем добавим на форму элемент управления listBox, который заполним несколькими любыми значениями.

27522


Чтобы программно выделить строку в listbox, нужно воспользоваться уже готовым методом SetSelected, в который в качестве первого параметра необходимо передать индекс выделяемого элемента, а в качестве второго параметра значение true, например:

C#:
private void button1_Click(object sender, EventArgs e)
{
listBox1.SetSelected(int.Parse(textBox1.Text), true);
}
результат

27523


Если Вы не знаете индекс элемента, но при этом знаете его значение, то тогда Вы можете выделить строку, например следующим способом.

C#:
private void button1_Click_1(object sender, EventArgs e)
{
//ищем указанный элемент и получаем его индекс
int index =  listBox1.FindString(textBox1.Text);
if (index >= 0)
{
//выделяем строку
listBox1.SetSelected(index, true);
}
}
Результат

27524


Выделение нескольких строк в listbox
Если Вам нужно выделить несколько строк в listBox (multiselect), то тогда сначала установите свойство SelectionMode, используя одноименное перечисление, в одно из следующих значений: SelectionMode.MultiSimple или SelectionMode.MultiExtended. Разница между значениями заключается в том, что в первом случаи Вы можете выделить несколько строк только мышкой, а во втором используя клавиатуру, например, нажав сочетание клавиш: Shift + стрелка вверх или вниз.

C#:
listBox1.SelectionMode = SelectionMode.MultiSimple;
//выделяем первую и последнюю строку в listbox
listBox1.SetSelected(0, true);
listBox1.SetSelected(2, true);
результат

chtenie-i-zagruzka-csv-fajla-na-c_2.png


Выделение строки сразу в двух элементах listbox
И в конце рассмотрим ещё один простой пример, но сначала добавим на форму ещё один listBox и так же заполним его несколькими значениями.

27525


Задача: при ручном выделении строки в listbox1 должна, автоматически выделится строка с таким же индексом в listBox2. Решение: сначала подписываемся на событие SelectedIndexChanged.

27526

C#:
private void listBox1_SelectedIndexChanged(object sender,EventArgs e)
{
}
А затем выделяем нужную строку в listbox2

C#:
private void listBox1_SelectedIndexChanged(object sender,EventArgs e)
{
listBox2.SetSelected(listBox1.SelectedIndex, true);
}
С помощью свойства SelectedIndex получаем текущий индекс выделенного элемента в listbox1, который затем используем, чтобы выделить строку в listbox2.

27527


Читайте также:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!