Вы, вероятно, должны использовать ListView вместо ListBox.
Например, для данных
List<Product> list = new List<Product>
{
new Product{Description = "abc efg", Price= 123},
new Product{Description = "abc efg hijk 12 1212 12", Price= 23},
new Product{Description = "abc", Price= 343},
new Product{Description = "abc efg", Price= 22}
};
Вы можете настроить ListView следующим образом.
Установить представление ListViewкак подробности для отображения нескольких столбцов
listView1.View = View.Details;
Далее Добавьте два столбца для отображения описания и цены.
listView1.Columns.Add("Description");
listView1.Columns.Add("Price");
Теперь вы можете добавить элементы в ListView следующим образом.
foreach(var items in list)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = items.Description;
lvi.SubItems.Add($"{items.Price} $");
listView1.Items.Add(lvi);
}
Наконец, вы можете убедиться, что столбцы изменят свой размер до максимального размера содержимого, используя метод AutoReizeColumn.
listView1.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
listView1.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);
Возможно, вас также заинтересует свойство FullRowSelect объекта ListView, которое позволяет выбрать полныйстрока, а не столбец при щелчке мыши по строке.
listView1.FullRowSelect = true;
Вывод