2016-11-05 127 views
0

这是我第一次进入C#WinForms,并试图创建一个ListView网格。添加列和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”之外没有其他信息,而不是其他列条目?

任何帮助,非常感谢!

+0

您创建了'arr2',但仍分配给'arr':'arr [0] =“product_2”'。 –

+0

您是否设置了View = Details? – TaW

+0

@GiladGreen - 废话,你是对的。这需要照顾那部分。 – prelic

回答

1

一个ListView的默认viewstyle是LargeIcon。在该视图中,不显示任何列或细节。 如果你希望你的栏是可见的,你应该ListView控件的View属性设置为Details

listView1.View = View.Details; 

在一个旁注:当你增加许多ListViewItems的,它可能是最好使用的AddRange方法而不是分开添加每个项目。这将显着提高性能。 另外,使用ListView上的BeginUpdate()和EndUpdate()方法。这将防止每次添加ListViewItem时重新绘制ListView。

+0

你说得对。有很多人在我愚蠢的数组赋值中遇到了这个错误,但更棘手的是View属性更改。与愚蠢的拼写错误不同,我会**不会**自己找到一个...这就是为什么我正确地标记这个答案,即使他们技术上都是这样。非常感谢! – prelic

+0

感谢您的提示。我会阅读并付诸实践。 – prelic

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"; 
+0

废话你是对的。多么愚蠢的错误。这里难题的第二部分是将视图属性设置为详细信息。 – prelic

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); 

如果你希望你的列名是可见的,设置列表项的视图属性设置为详细信息:

listView1.View = View.Details;