Как вывести элементы из Listbox
Имеется ComboBox, из которого пользователь выбирает строки, которые после этого отображаются на ListBox. Хочу эти выбранные элементы вывести через запятую.
Такой вариант:
string.Join(", ", listBox1.SelectedItems)
выдаёт System.Windows.Forms.ListBox+SelectedObjectCollection.
Пытаюсь обратиться к конкретному объекту ListBox по индексу:
listBox1.Items[1].ToString()
получаю простанство имен.имякласса, вместо значения, которое хранится по индексу 1.
Что не так?
Ответы (1 шт):
Нужно переопределить ToString() в вашем классе, который вы используете для заполнения Items, иначе по дефолту он выводит наименование типа.
Теперь можно джойнить строку как из SelectedItems, так и из Items, НО обязтаельно через Cast к нужному типу(таковы особенности этой коллекции)
public class MainForm { public MainForm() { listBox1.Items.Add(new DataItem { Name = "Петя" }); listBox1.Items.Add(new DataItem { Name = "Вася" }); var str = string.Join(",", listBox1.Items.Cast<DataItem>()); } } class DataItem { public string Name { get; set; } public override string ToString() { return Name; } }