c# - 如何将组添加到 ListView,然后将项目添加到组

标签 c# .net winforms

我试图在我的 ListView 控件中显示组,即使我可以在设计器 View 中手动添加它们,但这对我没有好处,因为我需要动态添加项目和组运行时,我不可能知道在运行时将添加哪些组。

我在网上搜索过,令我惊讶的是,我能找到的信息很少(这很有意义)。我能找到的唯一看起来像是为我想做的事情而制作的示例代码来 self 用 Visual Studio 下载的离线文档,该代码示例有 18 个编译时错误和 2 个主要入口点!

那么,我们如何在运行时动态地将组添加到 ListView 控件,然后将项目添加到列表。

所以您对我想要完成的事情有一个很好的了解,我在下面附上了一张图片:

ListView with Groups Sample

最佳答案

执行此操作的一种方法是将 ListViewGroup 添加到您的 ListView。然后在将项目添加到 ListView 时,添加一个新的 ListViewItem 并指定组。

public class Form1 {
    private ListViewGroup categoryGroup = new ListViewGroup("Categories", HorizontalAlignment.Left);
    private ListViewGroup movieGroup = new ListViewGroup("Movies", HorizontalAlignment.Left);
    private ListViewGroup castGroup = new ListViewGroup("Cast", HorizontalAlignment.Left);

    private void Form1_Load(object sender, EventArgs e)
    {
        ListView1.BeginUpdate();
        ListView1.Groups.Add(categoryGroup);
        ListView1.Groups.Add(movieGroup);
        ListView1.Groups.Add(castGroup);
        ListView1.EndUpdate();
    }

    private void Button1_Click(object sender, EventArgs e)
    {
        ListView1.BeginUpdate();
        Category.GetCategories().ForEach(x => ListView1.Items.Add(new ListViewItem(x.Name, categoryGroup)));
        Movie.GetMovies().ForEach(x => ListView1.Items.Add(new ListViewItem(x.Name, movieGroup)));
        Cast.GetCast().ForEach(x => ListView1.Items.Add(new ListViewItem(x.Names, castGroup)));

        ListView1.EndUpdate();
    }
}

我确信对此有一个更优雅的解决方案,但这应该给出一个关于如何将项目添加到各个组的不错的想法。

关于c# - 如何将组添加到 ListView,然后将项目添加到组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25271340/

相关文章:

c# - 为什么 IsWellFormedOriginalString 在文件 Uris 上失败?

c# - 从引用中删除版本号(避免 "Could not load file or assembly..."错误)?

c# - 使用C#从字符串中提取多个值

c# - 用 C# 编写二进制文件,然后用 C++ 读取同一文件

c# - tcpClient 和 IRC 客户端问题

.net - WPF 中的依赖属性和附加属性有什么区别?

c# - 表达评价设计题

C# Winforms 实时图表 : Fire Event when rendering of CartesianChart is finished

c# - 你如何制作一个非模态最顶层对话框,该对话框仅相对于 WinForms 中的父窗体最顶层?

c# - 如何在图像上绘制透明形状