2011-03-08 28 views
2

希望我能做到这一点,我还是新望到C#...在列表视图(C#)单独列中存储的字符串列表

我有一大堆的字符串列表,我想投入不同列表视图的列。我能够使用下面显示的代码来填充第一列,但无法弄清楚如何为后续的列执行此操作。

 List<string> l_Time = new List<string>(); 

     //l_Time is populated by a method 

     foreach (string elem in l_Time) 
     { 
      listViewEvents.Items.Add(new ListViewItem(elem)); 
     } 

listViewEvents是我的ListView

任何帮助表示赞赏。

编辑:

两个显示解决方案的工作来存储一整行,这我能网上找了很多我的列表。我希望能够将每个列表存储在自己的列中。这可能吗?

+1

哪个UI框架?的WinForms? WPF? ASP.NET? – 2011-03-08 23:43:43

+0

@Joe,好问题!我假设他指的是Winforms。 – 2011-03-09 17:13:40

回答

3

试试这个:

listViewEvents.Items.Add(new ListViewItem(l_Time.ToArray())); 

ListViewItem类有一个构造函数的字符串数组。当使用该构造函数时,其他字符串将出现在其他列中。

如果您想要对其他列执行更多操作,那么列表视图项目具有一个SubItems属性,该属性包含一组ListViewItem.ListViewSubItem对象。您可以使用您想要的任何值创建这些值,并将它们添加到列表视图项目对象中。

UPDATE

这里是在单独的列中显示字符串列表的方式:像这样调用

private static void DisplayListInColumns(ListView listView, List<string> values, int columnIndex) 
    { 
     for (int index = 0; index < values.Count; index++) 
     { 
      while (index >= listView.Items.Count) 
       listView.Items.Add(new ListViewItem()); 
      ListViewItem listViewItem = listView.Items[index]; 
      while (listViewItem.SubItems.Count <= columnIndex) 
       listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem()); 
      listViewItem.SubItems[columnIndex].Text = values[index]; 
     } 
    } 

 List<string> listOne = new List<string>() { "one", "two", "three", "four", "five", "six" }; 
     List<string> listTwo = new List<string>() { "January", "February", "March", "April", "May" }; 
     List<string> listThree = new List<string>() { "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel" }; 

     DisplayListInColumns(myListView, listOne, 0); 
     DisplayListInColumns(myListView, listTwo, 1); 
     DisplayListInColumns(myListView, listThree, 2); 
0

沿着这些线路试一下:

// This assumes all lists have the sample number of items 
for (int i = 0; i < list1.Count; i++) 
{ 
    ListViewItem lvi = new ListViewItem(list1[i]); 
    lvi.SubItems.Add(list2[i]); 
    lvi.SubItems.Add(list3[i]); 
    listViewEvents.Items.Add(lvi); 
} 
+0

这两种解决方案都可以将我的列表存储在一行中,我可以在网上找到很多列表。我希望能够将每个列表存储在自己的列中。这可能吗? – Micky 2011-03-09 13:02:18

+0

不是直接。看到我更新的答案。 – 2011-03-09 23:28:09

0

确实有可能。假设您的所有列表具有相同的长度,只需一次查看第一个列表中的一个项目,然后为每个项目添加SubItems来自每个其他列表的具有相同索引的元素。换句话说,在索引0处从每个列表索引1处从每个列表添加的项目一个 ListView项,则该项目以另一个 ListView项,依此类推。

相关问题