Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

отобразить любой текст при выборе пункта в listview c#

Когда нажал на пункт в listbox, то показывается текст в textbox1, например, нажал на пункт 12 (listbox.item.add("12")); и в textbox появился текст textbox1.text="asdasdasd" если нажал на другой пункт то появилось другой текст в textbox1 не знаю как сделать..


Ответ

У компонента ListBox есть событие SelectedIndexChanged, в обработчике которого можно реализовать нужную вам логику. Например, так:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { //Объявляем переменную lb и приводим компонент, вызвавший событие к типу ListBox //(у нас же событие сгененрировал ListBox1, верно? А он имеет тип ListBox. var lb = sender as ListBox; //В наж текст-бокс пишем номер выбранного пункта, здесь lb.SelectedIndex + 1 так как //нумерация с нуля. textBox1.Text = "Выбран пункт №" + (lb.SelectedIndex + 1).ToString(); }
или так:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { //Получим номер выбранного пункта: int i = (sender as ListBox).SelectedIndex + 1; //В зависимости от номера делаем какие-то РАЗНЫЕ действия: switch (i) { case 1: textBox1.Text = "Выбран первый пункт списка"; break; case 2: textBox1.Text = "Тра-ля-ля"; break; case 3: textBox1.Text = "Тру-ля-ля"; break; case 4: case 5: textBox1.Text = "Выбран 4 или 5 пункт, лениво уточнять..."; break; default: textBox1.Text = "Я таких цифр не знаю!"; break; }
}
UPDATE:
Можно для привязки объявить и заполнить массив связанных с каждым пунктом значений. В примере я объявляю строковый массив (хотя он может быть любого типа) из 5 пунктов, и, в зависимости от индекса выбранного пункта в ListBox, вывожу соответствующий этому индексу элемент массива. Если у вас в ListBox будет 100 пунктов, то и массив должен быть не менее чем из 100 пунктов. Но на всякий случай делаю проверку индекса:
public string[] textData = new string[5] { "qwe", "rty", "uio", "p[]", "asd" };
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { //Получим индекс выбранного пункта: int i = (sender as ListBox).SelectedIndex; //Проверяем, не вышли ли мы за границы масива? if (i > textData.GetLength(0)-1) { textBox1.Text = "С этим пунктом ничего не связано!"; return; } textBox1.Text = textData[i]; }

Комментариев нет:

Отправить комментарий