列表视图项(和子项)

本文关键字:视图 列表 | 更新日期: 2023-09-27 18:08:00

希望你们能在我发疯之前再帮我一次。我一直在这里和谷歌上到处搜索。通过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",没有别的了…

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

我有一个名为"members"的字典。它包含两个字符串,"name"作为键,和"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 });
}

我想要完成的是,我的listview将显示两列,第一列名称与文本"name",第二个"Last seen"。在每一列下面,我希望显示我的字典的内容。

在我完全疯掉之前,有人能帮我解释一下吗?谢谢…

虽然答案是正确的,但我仍然没有得到我想要的输出,我不确定如何做到这一点。

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

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

我要的是:

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

字典当前包含3个KeyValuePairs

列表视图项(和子项)

这个示例是正确的,您应该将listView置于详细信息模式并添加列。

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

只有当您将ListView设置为详细信息模式时,才能看到这些列

确保ListView的View属性设置为Details,以便显示列。

你可能还想在设计时设置你的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)
        }
    }

如果你看到的都是大图标,你需要将ListView的View属性设置为Details。否则代码看起来或多或少是正确的