winforms ListView隐藏或折叠所选组

vsdwdz23  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(225)

如何隐藏或折叠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"];

有时我想隐藏offlineGroup

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

但我不知道我该怎么做。我可以只是折叠它,不画它或有任何可能隐藏它?

b5buobof

b5buobof1#

似乎是那个。NET版本的ListViewGroup class不提供CollapseExpand方法。
幸运的是,原生的ListView控件确实支持它,一个人提供了an extension to enable expand and collapse
使用他的代码,你可以有一个函数来设置展开/折叠状态:

private void SetGroupCollapse(GroupState state)

为了隐藏一个完整的组,我将简单地删除该组中的所有项目。

2cmtqfgy

2cmtqfgy2#

下面是从ListView派生的控件的源代码,它具有正确实现的可折叠逻辑:
https://www.codeproject.com/Articles/36775/Collapsible-ListViewGroup
使用此控件,并在创建项和组之后,我不得不调用:

lvIssues.SetGroupState(ListViewGroupState.Collapsible);

而我的团队也变得很好。

相关问题