ListView против ListBox для использования нескольких столбцов - PullRequest
18 голосов
/ 16 марта 2012

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

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

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

Ответы [ 4 ]

12 голосов
/ 17 марта 2012

В этом сценарии нет ничего плохого с 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;
}

Конечно, с этого момента все может стать более сложным, но если вы просто хотите отображать данные в табличной форме ... это довольно просто.

4 голосов
/ 17 марта 2012

Проверьте это

https://stackoverflow.com/a/227355/988830

Хотя listbox используется для одного столбца, а listview используется для mutlicolumn, ответ на этот вопрос зависит от всех.

Иногдаможет потребоваться список из нескольких столбцов, в который нужно добавлять разные типы детей.Вы не можете связать их, используя listview, поэтому лучше использовать listbox в таких сценариях.Но если вы хотите отсортировать их с помощью заголовка, используйте listview, потому что это просто.

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

Спасибо, Омкар

4 голосов
/ 17 марта 2012

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
2 голосов
/ 16 марта 2012

ListView намного лучше для многоколоночного представления данных. Тем не менее, он кажется более сложным / уродливым кодом, чем простой ListBox.

Все же это намного лучше по многим причинам, изменяемые размеры столбцов и все такое.

Я не думаю, что ListBox имеет несколько столбцов, поэтому вам придется взломать что-то уродливое.

http://www.xtremedotnettalk.com/showthread.php?t=93443

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...