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