2012-07-18 68 views
0

好的,如何以编程方式将项目从List<ListViewItem.ListViewSubItem>添加到ListView?我试图加载彼此相邻项目3所列出,但它似乎没有工作...列表查看列表关于子项目

下面是一些代码,我现在所拥有的:

//----------PluginHandler.cs----------/ 

public static List<ListViewItem> PluginList = new List<ListViewItem>(); 
public static List<ListViewItem.ListViewSubItem> PluginList2 = new List<ListViewItem.ListViewSubItem>(); 

PluginList.Clear(); 
PluginList2.Clear(); 
foreach (var item in plugin.versions) 
{ 
    var lvitem = new ListViewItem { Text = item.name }; 
    var lvitem2 = new ListViewItem.ListViewSubItem { Text = item.filename }; 
    PluginList.Add(lvitem); 
    PluginList2.Add(lvitem2); 
} 

    //----------Form1.cs----------/ 

lvPluginInfo.Items.AddRange(PluginHandler.PluginList.ToArray()); 
lvPluginInfo.Items[0].SubItems.AddRange(PluginHandler.PluginList2.ToArray()); 

输出我得到ISN”我真的想要什么,它不断地添加子项,而不是将它们添加到eachother旁边,如:

item1a | item2a
item1b | item2b ...

现在我得到:
item1a | item2a | item1b | item2b | ...

任何想法?谢谢!

回答

1

你似乎正以非常奇怪的方式去解决这个问题。我认为这是你打算做的事情?

lvPluginInfo.Items.Clear(); 
foreach (var item in plugin.versions) 
{ 
    var lvitem = new ListViewItem(item.name); 
    lvitem.SubItems.Add(item.filename); 
    lvPluginInfo.Items.Add(lvitem); 
} 

问题的方式你走的是如下行:lvPluginInfo.Items[0].SubItems.AddRange(PluginHandler.PluginList2.ToArray());。您将所有子项添加到第一个ListViewItem。在循环外添加项目在这里没有多大意义。

+0

我无法直接从其他课程编辑项目吗? – 2012-07-18 16:24:00

+0

你可以。你可以在这个类上创建一个公共方法(我假设一个'Form'?),它叫做'UpdatePluginList()',它包含上面的逻辑。您可以在另一个类的窗体实例上调用此方法。 – 2012-07-18 16:30:05

+0

我该怎么做:o? – 2012-07-18 16:42:42