Was*_*bee 4 .net c# listview winforms
我有listview2 个组(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);
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我需要以某种方式在这两个组之间移动项目或从列表中删除项目name,status以便它可以再次添加到另一个组中。
我知道selected当我点击它时如何删除它,但是当其他类或函数调用“移动该特定项目/将该特定项目分配给另一个组”时该怎么做?
这f2list是由 another 调用的public void AddUserToList,但这只是分配文本f2list(group,username,status);(例如f2list("ONLINE","Joe","Hey i am online!");,还检查是否username已存在以防止重复项。
如何在组之间移动项目取决于调用了哪些组f2list(group, ...?这group是预定义的OFFLINE或ONLINE
因此,当Nameaka 上username线以显示listview并分组ONLINE时,但当他/她下线时,则分配到另一个组OFFLINE?
附加信息:此代码仅适用于将项目添加到列表中。但是如何在这两个组之间移动项目?甚至从组所在的列表中删除项目OFFLINE或ONLINE?
编辑此外,当我手动删除selected项目时,此项目将正确更改组。
编辑 2这些项目是通过添加这些项目来timer检查其他用户是否在线或离线的。
使用 FindItemWithText 查找项目
要查找Item基于Text的项目,您可以使用FindItemWithText
var item = this.listView1.FindItemWithText("item text");
Run Code Online (Sandbox Code Playgroud)
您还可以使用其他签名在搜索中包含子项:
var item = this.listView1.FindItemWithText("", true, 0);
Run Code Online (Sandbox Code Playgroud)
使用 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();
Run Code Online (Sandbox Code Playgroud)
找组
创建组时,为组分配合适的名称,然后按名称查找它们。注意Name不同于HeaderText。要按名称查找组,您可以:
var group = this.listView1.Groups["group1"];
Run Code Online (Sandbox Code Playgroud)
将项目移动到组
要将 an 移动Item到 a Group,只需找到该项目并找到您想要的组,然后只需将该组分配给 的Group属性即可Item:
item.Group = group;
Run Code Online (Sandbox Code Playgroud)