2011-09-06 103 views
0

希望你们能够在我疯了之前再次帮助我。 我们一直在寻找轻和低,在这里和谷歌。 通过MSDN来回走,但无济于事......我只是不明白我在做什么错...列表查看项目(和子项目)

我有一个表格,在那里我添加了一个列表视图(没有任何更改当它被拖动到表单时的默认设置)。

经过一天的鬼混,我只是简单地尝试一个简单的例子,因为没有我想做的事情会工作。这个例子得到了某种“如果这不起作用,那么是时候寻求帮助了!”...

这是例子;

ListViewItem item = new ListViewItem(); 
item.Text = "FirstItem"; 
item.SubItems.Add("A subitem"); 
item.SubItems.Add("A second subitem"); 
item.SubItems.Add("A third subitem"); 
listView1.Items.Add(item); 

所有,这个例子给我,它“与firstItem”,没有别的...

我自己的版本,我想试试,如下:

我有一个名为词典“成员”。它包含两个两个字符串,“名称”为Key,以及“LastSeen”广告价值。

我想以下几点:

if (GroupMembers.Count > 0) 
{ 
    listView1.Items.Clear(); 
    key2name getname = new key2name(); 
    ListViewItem lvi = new ListViewItem("Name"); 
    ListViewItem lvi2 = new ListViewItem("Last seen"); 
    listView1.Columns.Add("Name", -2, HorizontalAlignment.Left); 
    listView1.Columns.Add("LastSeen", -2, HorizontalAlignment.Left); 
    foreach (KeyValuePair<string, string> member in GroupMembers) 
    { 
     lvi.SubItems.Add(member.Key); 
     lvi2.SubItems.Add(member.Value); 
    } 
    listView1.Items.AddRange(new ListViewItem[] { lvi, lvi2 }); 
} 

什么我试图acomplish,是我的列表视图会显示两列,与文本“名称”的第一列名,第二届“最后一次露面”。 在这些列的每一列下,我想让我的字典的内容显示出来。

有人可以帮我解释一下这个之前我彻底疯了吗? 谢谢...

虽然答案是正确的,我还没有得到我想要的本安输出,而我不知道怎么做吧..

现在我看到的列, 但我得到这个:

| Name | LastSeen | 
|Last seen | 2011-09-06 | 
|Name  | Full Name | 

我要的是:

| Name | LastSeen | 
|FullName | 2011-09-06 | 
|FullName | 2011-09-06 | 
|FullName | 2011-09-06 | 

字典curently包含3个KeyValuePairs

+0

您正在添加SubItems。您应该添加ListViewItems。 –

回答

1

这个例子是正确的,你应该把listView放入详细模式并添加列。

你的代码之后是错误的你不应该创建两个列表项目lvi和lv2,只在foreach中创建1,其文本是第一列的文本,添加子项目并将其添加到列表视图内该foreach。

只有当您在详细模式下设置ListView时,才会看到列。

+0

谢谢大卫..我错过了你的答案... 显然,这是正确的代码: [code] listView1.Items.Clear(); key2name getname = new key2name(); listView1.Columns.Add(“Name”,-2,Horizo​​ntalAlignment.Left); listView1.Columns.Add(“LastSeen”,-2,Horizo​​ntalAlignment.Left); foreach(KeyValuePair GroupMembers中的成员) ListViewItem lvi = new ListViewItem(getname.Execute(member.Key)); lvi.SubItems.Add(member.Value); listView1.Items.Add(lvi); } [/ code] – Rickard

0

如果您看到的只是大图标,则需要将ListView上的View property设置为Details。否则代码看起来或多或少是正确的。

1

确保您的ListView将其视图属性设置为“详细信息”以便列显示。

您可能还想在设计时设置一些listview的属性,包括您的列,除非它们是动态的。

if (GroupMembers.Count > 0) 
    { 
     listView1.Items.Clear(); 
     key2name getname = new key2name(); 

     //If your going to do this here, you will want to clear your Columns 
     //listView1.Columns.Clear(); 
     //However, I would suggest you put this elsewhere, or better yet set at design time. 

     listView1.Columns.Add("Name", -2, HorizontalAlignment.Left); 
     listView1.Columns.Add("LastSeen", -2, HorizontalAlignment.Left); 


     foreach (KeyValuePair<string, string> member in GroupMembers) 
     { 
      //This creates a new 'row' in your listview, and populates the first column 
      // with the Key 
      ListViewItem lvi = new ListViewItem(member.Key); 

      //This populates the second column with the value 
      lvi.SubItems.Add(member.Value); 


      listView1.Items.Add(lvi) 
     } 
    } 
+0

那么简单... 谢谢:) – Rickard

+0

如果这个工作,你应该把它标记为答案Rickard。 –