这是我第一次涉足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);
但输出如下:
这里有几个问题:
非常感谢任何帮助!
答案 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;