C# Listview项(和子项)

C# Listview项(和子项),c#,winforms,C#,Winforms,希望你们能在我发疯之前再帮我一次忙。 我一直在谷歌上到处搜索。 反复查看MSDN,但没有结果。。。我只是不明白我做错了什么 我有一个表单,在这里我添加了一个listview(当它被拖到表单中时,默认设置没有任何更改) 经过一天的胡闹,我开始简单地尝试一个简单的例子,因为我想做的事情都不管用。这个例子就像是“如果这不起作用,那么是时候寻求帮助了!” 这是一个例子 ListViewItem item = new ListViewItem(); item.Text = "FirstItem"; ite

希望你们能在我发疯之前再帮我一次忙。 我一直在谷歌上到处搜索。 反复查看MSDN,但没有结果。。。我只是不明白我做错了什么

我有一个表单,在这里我添加了一个listview(当它被拖到表单中时,默认设置没有任何更改)

经过一天的胡闹,我开始简单地尝试一个简单的例子,因为我想做的事情都不管用。这个例子就像是“如果这不起作用,那么是时候寻求帮助了!”

这是一个例子

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);
这个例子给了我的一切,它是“第一项”,没有别的

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

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 });
}
我有一本名为“成员”的字典。它包含两个字符串,“name”作为键,“LastSeen”作为ad值

我正在尝试以下方法:

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 });
}
我想要的是:

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

字典目前包含3个KeyValuePairs

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

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

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


只有将ListView设置为“详细信息”模式后,才能看到列。

确保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)
        }
    }
if(GroupMembers.Count>0)
{
listView1.Items.Clear();
key2name getname=新的key2name();
//如果要在此处执行此操作,则需要清除列
//listView1.Columns.Clear();
//但是,我建议您将其放在其他地方,或者最好在设计时设置。
listView1.Columns.Add(“Name”,-2,HorizontalAlignment.Left);
listView1.Columns.Add(“LastSeen”,-2,HorizontalAlignment.Left);
foreach(GroupMembers中的KeyValuePair成员)
{
//这将在listview中创建一个新的“行”,并填充第一列
//用钥匙
ListViewItem lvi=新的ListViewItem(member.Key);
//这将使用值填充第二列
lvi.SubItems.Add(member.Value);
listView1.Items.Add(lvi)
}
}

Argh。。这么简单。。。谢谢:)您正在添加子项。您应该改为添加ListViewItems。谢谢Davide。。我错过了你的答案。。。显然,这是正确的代码:[code]listView1.Items.Clear();key2name getname=新的key2name();listView1.Columns.Add(“Name”,-2,HorizontalAlignment.Left);listView1.Columns.Add(“LastSeen”,-2,HorizontalAlignment.Left);foreach(GroupMembers中的KeyValuePair成员){ListViewItem lvi=new ListViewItem(getname.Execute(member.Key));lvi.SubItems.Add(member.Value);listView1.Items.Add(lvi);}[/code]