ListView隐藏或折叠选定的组

scz*_*vos 6 c# listview show-hide .net-3.5 winforms

如何隐藏或折叠某些群组ListView

我只是添加一些项目

contactListView.Items.Add(new ISIMlistViewItem(contact));
if (contact.availability == 6)
    contactListView.Items[contact.identificator].Group = contactListView.Groups["offlineGroup"];
else
    contactListView.Items[contact.identificator].Group = contactListView.Groups["onlineGroup"];
Run Code Online (Sandbox Code Playgroud)

而我想有时隐藏offlineGroup.

if (hideOffline == true)
{
    // something like
    contactListView.Groups["offlineGroup"].Hide();
    // or
    contactListView.Groups["offlineGroup"].Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

但我不知道我该怎么做.我可以将它折叠起来并且不绘制它或者是否有可能隐藏它?

Uwe*_*eim 5

似乎ListViewGroup该类的.NET版本没有提供CollapseExpand方法。

幸运的是,本机ListView控件确实支持它,并且一个人提供了扩展以实现扩展和折叠

然后,使用他的代码,您可以使用以下功能设置展开/折叠状态:

private void SetGroupCollapse(GroupState state)
Run Code Online (Sandbox Code Playgroud)

为了隐藏一个完整的组,我只需删除该组中的所有项目。

  • 我有相同的想法。但是我尽管可以隐藏任何想要的组,然后再次显示它。我不喜欢将项目从一组移到某个临时位置以隐藏组然后再返回以显示组。我认为我将使用崩溃扩展。 (3认同)