添加列和ListView项

时间:2016-11-05 20:03:26

标签: c# winforms listview

这是我第一次涉足C#WinForms,我试图创建一个ListView网格。

我的代码如下所示:

listView1.Columns.Add("Name", 100);
listView1.Columns.Add("Col2", 200);
listView1.Columns.Add("Col3", 300);
string[] arr = new string[3];
arr[0] = "product_1";
arr[1] = "100";
arr[2] = "10";
string[] arr2 = new string[3];
arr[0] = "product_2";
arr[1] = "200";
arr[2] = "20";
ListViewItem itm = new ListViewItem(arr);
ListViewItem itm2 = new ListViewItem(arr2);
listView1.Items.Add(itm);
istView1.Items.Add(itm2);

但输出如下:

Result

这里有几个问题:

  • 为什么我看不到列名?
  • 为什么我看不到网格线?
  • 为什么只显示最后一个条目(product2)?
  • 为什么除了字符串" product2"之外没有其他信息。显示,而不是其他列条目?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

ListView的默认视图样式是LargeIcon。在该视图中,不显示任何列或详细信息。 如果您希望列可见,则应将ListView的View属性设置为Details

listView1.View = View.Details;

旁注:当您添加大量ListViewItem时,最好使用AddRange方法,而不是单独添加每个项目。这将显着提高性能。 另外,请使用ListView上的BeginUpdate()和EndUpdate()方法。这将阻止每次添加ListViewItem时重绘ListView。

答案 1 :(得分:0)

您正在创建新数组并将值分配给此片段中的旧数组:

string[] arr2 = new string[3];
arr[0] = "product_2";  //arr instead of arr2 here!
arr[1] = "200";
arr[2] = "20";

应该是:

string[] arr2 = new string[3];
arr2[0] = "product_2";
arr2[1] = "200";
arr2[2] = "20";

答案 2 :(得分:0)

你创建了arr2但是错误地将它的值分配给了arr,如下所示:

string[] arr2 = new string[3];
arr[0] = "product_2"; // Should be arr2[0]
arr[1] = "200"; // Should be arr2[1]
arr[2] = "20"; // Should be arr2[2]

使用以下内容替换您的代码:

listView1.Columns.Add("Name", 100);
listView1.Columns.Add("Col2", 200);
listView1.Columns.Add("Col3", 300);

string[] arr = new string[3];
arr[0] = "product_1";
arr[1] = "100";
arr[2] = "10";

string[] arr2 = new string[3];
arr2[0] = "product_2";
arr2[1] = "200";
arr2[2] = "20";

ListViewItem itm = new ListViewItem(arr);
ListViewItem itm2 = new ListViewItem(arr2);

listView1.Items.Add(itm);
istView1.Items.Add(itm2);

如果您希望列名可见,请将ListItem的View属性设置为详细信息:

listView1.View = View.Details;