if (comboBox1.Text == "1")
{
int group1 = 0;
group1 = listView1.Groups.Add(new ListViewGroup("Group 1"));
listView1.ShowGroups = true;
listView1.View = View.Details;
string[] row = { textBox1.Text, textBox2.Text, textBox3.Text };
ListViewItem lvi1 = new ListViewItem(row);
lvi1.Group = listView1.Groups[group1];
listView1.Items.Add(lvi1);
}
如果选择了组1并且已经创建了组1,它应该将数据添加到组中,而不是创建副本。
答案 0 :(得分:0)
两种方法:
检查是否已有第一组。
删除旧的第一组并每次重新创建。
我绝对是方法1的粉丝,因为它只需要一个简单的检查。方法2需要做更多的工作,如果你想使用ListView
中的项目,你很快就会生气,因为它们可能不再存在(一旦它们被删除并重新创建)。
不确定我的问题是否正确顺便说一下,对你的问题进行详细阐述可能会有所帮助。
答案 1 :(得分:0)
if (comboBox1.Text == "1")
{
var groupLabel = "Group 1";
var group = listView1.Groups[groupLabel];
if (group == null)
{ // group did not exist - let's create it and add it to the view
group = new ListViewGroup(groupLabel);
listView1.Groups.Add(group);
}
listView1.ShowGroups = true;
listView1.View = View.Details;
string[] row = { textBox1.Text, textBox2.Text, textBox3.Text };
ListViewItem lvi1 = new ListViewItem(row) {Group = group};
listView1.Items.Add(lvi1);
}
如果在GroupCollection上使用字符串索引器,并且不存在具有该字符串(即名称)的组,则会得到null。这是创建它并将其插入集合的线索。
您总是可以将所有这些封装在扩展类
中public static class ListViewExt
{
public ListViewGroup GetGroup(this ListView view, string groupLabel)
{
var group = view.Groups[groupLabel];
if (group == null)
{ // group did not exist - let's create it and add it to the view
group = new ListViewGroup(groupLabel);
view.Groups.Add(group);
}
return group;
}
}
然后在你的代码中调用它:
if (comboBox1.Text == "1")
{
listView1.ShowGroups = true;
listView1.View = View.Details;
string[] row = { textBox1.Text, textBox2.Text, textBox3.Text };
ListViewItem lvi1 = new ListViewItem(row) {Group = listView1.GetGroup("Group 1")};
listView1.Items.Add(lvi1);
}
答案 2 :(得分:0)
对我来说,访问listview.group[name]
的解决方案始终返回null。
所以,我使用了一些linq来实现同样的目的:
ListViewGroup lvg = this.listView_History.Groups.Cast<ListViewGroup>()
.Where(x => x.Header == "MyString").FirstOrDefault();
if (lvg == null)
{
lvg = new ListViewGroup("MyString");
listView_History.Groups.Add(lvg)
}
ListViewItem LVI = new ListViewItem();
LVI.Group = lvg;