ListView与ListBox的多列使用

我目前正在努力应用我的应用程序的GUI。 我很难搞清楚ListBox或ListView是否更适合数据的多列表示。

我更喜欢“干净”的代码,因为意大利面条代码和黑客攻击方法可能导致混淆。

ListBox和ListView如何处理多个列?

在这种情况下, DataGridView肯定没有问题。

样品:

 class Car { public string Make { get; set; } public string Model { get; set; } public int Year { get; set; } } 

将数据加载到DataGridView函数

 private void LoadData() { List cars = new List() { new Car() { Make = "Subaru", Model = "Impreza", Year = 2005 }, new Car() { Make = "Ford", Model = "Mustang", Year = 1984 } }; dataGridView1.DataSource = cars; } 

当然,从这里开始,事情会变得更复杂,但如果你只是想以表格方式显示数据……那就非常简单了。

看一下这个

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

虽然列表框用于单列,列表视图用于mutlicolumn,但答案是全部依赖。

有时您可能需要多列列表,您需要添加不同类型的子项。 您无法使用listview绑定它们,因此最好在这种情况下使用listbox。 但是如果你想使用标题对它们进行排序,请使用listview,因为它很简单。

总而言之,我想说如果你只是拥有多列数据而没有更好的方法来使用listview,如果你想做按钮,树视图,扩展器等奇特的东西,ListBox真的很酷。

谢谢,Omkar

如果您希望能够直接从网格编辑数据(如电子表格),那么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 

ListView对于数据的多列表示更好。 然而,它似乎比简单的ListBox更复杂/丑陋的代码。

由于许多原因,可调整列以及所有这些,它仍然好得多。

我不认为ListBox有多个列,所以你不得不破解丑陋的东西。

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