Выделение строки в listbox

Как программно выделить строку в listbox?

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

каркас приложения

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

private void button1_Click(object sender, EventArgs e)
{
listBox1.SetSelected(int.Parse(textBox1.Text), true);
}

результат

выделение строки по индексу элемента

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

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

Результат

выделение строки по значению элемента

Выделение нескольких строк в listbox

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

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

результат

выделение нескольких строк

Выделение строки сразу в двух элементах listbox

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

два элемента управления listbox

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

подписка на событие SelectedIndexChanged

private void listBox1_SelectedIndexChanged(object sender,EventArgs e)
{
}

А затем выделяем нужную строку в listbox2

private void listBox1_SelectedIndexChanged(object sender,EventArgs e)
{
listBox2.SetSelected(listBox1.SelectedIndex, true);
}

С помощью свойства SelectedIndex получаем текущий индекс выделенного элемента в listbox1, который затем используем, чтобы выделить строку в listbox2.

выделение двух строк

Читайте также:

2 комментария

  1. Альберт says:

    Доброго времени суток!
    А как быть с .NETCFv3.5? Там нет метода .SetSelected() у ListBox’а…

  2. Привет. В .NETCFv 3.5 не знаю даже, не использовал его.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*