Подтвердить что ты не робот

ListView vs. ListBox для использования нескольких столбцов

В настоящее время я борюсь с графическим интерфейсом моего приложения. Мне сложно определить, является ли ListBox или ListView более "подходящим" для представления данных с несколькими столбцами.

Я предпочитаю "чистый" код, который не слишком запутан, чтобы понять, поскольку код спагетти и методы взлома могут привести к путанице.

Как и ListBox, и ListView обрабатывают несколько столбцов?

4b9b3361

Ответ 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