列表视图项(和子项)
本文关键字:视图 列表 | 更新日期: 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。否则代码看起来或多或少是正确的