我listview
有两个小组(ONLINE
和OFFLINE
)和两个小组(Name
和Status
)。
这是我将代码添加到特定群组的代码:
public void f2list(object group, string friend, string status)
{
ListViewItem item = new ListViewItem(new string[] { friend, (string)status });
GroupItem(item, group);
this.ListView.Items.Add(item);
}
object group
定义了将添加哪个组项OFFLINE
或ONLINE
,
string friend
定义了朋友用户名,string status
只是第二列Status
该代码的第二部分:
private void GroupItem(ListViewItem item, object group2)
{
foreach (ListViewGroup group in this.ListView.Groups)
{
if (group.Header == (string)group2)
{
item.Group = group;
break;
}
}
}
因此,我需要以某种方式在这两个组之间移动项目,或从列表中删除项目name
和status
,以便可以再次将其添加到另一个组中。
我知道当我点击它时如何删除selected
项,但是当其他课程或功能调用移动该特定项目/将该特定项目分配给另一个组时,该怎么做?' ?
此f2list
由另一个public void AddUserToList
调用,但这仅用于分配f2list(group,username,status);
之类的文字(例如。f2list("ONLINE","Joe","Hey i am online!");
)以及检查username
是否f2list(group, ...
已经存在,以防止双重项目。
如何在组之间移动项目取决于group
中调用哪些组?此OFFLINE
已预定义为ONLINE
或Name
因此,当username
又名listview
联机以显示在ONLINE
和群组OFFLINE
中,但当他/她离线时,则分配到另一个群组OFFLINE
?
其他信息:此代码仅适用于向列表中添加项目。但是如何在这两组之间移动物品?或者甚至从列表中ONLINE
或selected
?
编辑此外,当我手动删除timer
项时,此项目会正确更改群组。
编辑2 这些项目由private final Map<Class, Consumer<String>> actions = new HashMap<>();
添加,用于检查其他用户是在线还是离线。
答案 0 :(得分:2)
使用FindItemWithText查找项目
要根据Item
项目查找Text
,您可以使用FindItemWithText
var item = this.listView1.FindItemWithText("item text");
您还可以使用其他签名在搜索中包含子项目:
var item = this.listView1.FindItemWithText("", true, 0);
使用Linq查找项目
另外,要执行自定义搜索,您可以使用Linq
方法。例如:
var item = this.listView1.Items.Cast<ListViewItem>()
.Where(x => (x.Text == "Some Text" ||
x.SubItems[1].Text == "Some Text") &&
x.Group.Name=="group1" )
.FirstOrDefault();
查找论坛
创建组时,为组指定合适的名称,然后按名称查找它们。注意Name
与HeaderText
不同。要按名称查找组,您可以:
var group = this.listView1.Groups["group1"];
将项目移至群组
要将Item
移至Group
,只需找到该项目并找到所需的群组,然后只需将该群组分配到Group
属性{ {1}}:
Item