【发布时间】:2016-05-06 14:03:07
【问题描述】:
我有 listview 2 组(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 aka username 上线显示在listview 和组ONLINE 但是当他/她下线时然后分配到另一个组OFFLINE?
其他信息:此代码仅在将项目添加到列表时才能正常工作。但是如何在这两组之间移动项目?或者甚至从组为OFFLINE 或ONLINE 的列表中删除项目?
编辑此外,当我手动删除 selected 项目时,此项目将正确更改组。
EDIT 2 这些项目由timer 添加,它会检查其他用户是在线还是离线。
【问题讨论】:
-
您要更改所选项目的组吗?
-
@RezaAghaei 不是
selected项目,例如。鼠标单击,我想更改通过例如 FindByText 方法或类似方法找到的项目组。 -
只需通过方法或用户点击找到该项目,然后将项目的
Group属性设置为合适的值。有什么问题? -
@RezaAghaei 问题是我不熟悉多列列表视图(我从未使用过)所以我不确定如何通过
Name查找项目,以及如何搜索/过滤Name仅在ONLINE或OFFLINE组中,不在整个列表视图中,仅在组中。 :/ 编辑:我可以使用此代码GoupItem更改项目组,但它不会显示更改的项目,它将保持第一次添加到列表时的状态。 -
我为您分享了一些有用的方法。要查找项目,请找到一个组并将项目移动到一个组。