ListView vs. ListBox для использования нескольких столбцов
В настоящее время я борюсь с графическим интерфейсом моего приложения. Мне сложно определить, является ли ListBox или ListView более "подходящим" для представления данных с несколькими столбцами.
Я предпочитаю "чистый" код, который не слишком запутан, чтобы понять, поскольку код спагетти и методы взлома могут привести к путанице.
Как и ListBox, и ListView обрабатывают несколько столбцов?
Ответы
Ответ 1
В этом случае, конечно, нет ничего плохого в DataGridView
.
Пример:
class Car
{
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
}
Функция для загрузки данных в DataGridView
private void LoadData()
{
List<Car> cars = new List<Car>()
{
new Car() { Make = "Subaru", Model = "Impreza", Year = 2005 },
new Car() { Make = "Ford", Model = "Mustang", Year = 1984 }
};
dataGridView1.DataSource = cars;
}
Конечно, отсюда все может усложниться, но если вы просто хотите отображать данные в табличном стиле... это довольно просто.
Ответ 2
Проверьте это
fooobar.com/questions/24480/...
Хотя listbox используется для одного столбца, а listview используется для mutlicolumn, ответ зависит от этого.
Иногда вам может потребоваться многоколоночный список, где вам нужно добавить разные типы детей. Вы не можете связать их с помощью listview, поэтому лучше использовать список в таких сценариях. Но если вы хотите отсортировать их с помощью заголовка, используйте listview, потому что это просто.
В заключение я бы сказал, если у вас просто есть данные с несколькими столбцами, и нет ничего лучше использовать listview else, если вы хотите делать причудливые вещи, такие как кнопки, древовидная структура, расширитель и т.д. ListBox действительно классный.
Спасибо,
Omkar
Ответ 3
DataGridView хорош, если вы хотите иметь возможность редактировать данные прямо из сетки, например, таблицы. Режим просмотра в режиме просмотра отлично подходит для простого представления списков столбцов данных. Насколько мне известно, DataGridView будет легче отсортировать.
Как правило, я делаю что-то вроде этого:
private void UpdateListView()
{
mListView.Items.Clear();
foreach (Item item in mItems)
{
ListViewItem listViewItem =
new ListViewItem(item.Value1.ToString()) { Tag = item; }
listViewItem.SubItems.Add(item.Value2.ToString());
listViewItem.SubItems.Add(item.Value3.ToString());
mListView.Items.Add(listViewItem);
}
}
Столбцы должны быть определены в конструкторе, включая текст заголовка столбца и ширины столбцов.
С помощью элемента Tag = item; вы сможете получить доступ к выбранному объекту с помощью:
if (mListView.SelectedIndices.Count <= 0)
return;
Item selectedItem = mListView.SelectedItems[0].Tag as Item;
if (selectedItem == null)
return;
// do something with selectedItem
Ответ 4
ListView намного лучше для представления данных с несколькими столбцами. Однако, похоже, он становится более сложным/уродливым кодом, чем простой ListBox.
Тем не менее его гораздо лучше по многим причинам, изменяемые по размеру столбцы и все такое.
Я не думаю, что ListBox имеет несколько столбцов, поэтому вам придется взломать что-то уродливое.
http://www.xtremedotnettalk.com/showthread.php?t=93443