【问题标题】:C# ListView Appears Blank with GroupsC# ListView 出现空白组
【发布时间】:2011-05-23 13:31:29
【问题描述】:

在 VS2005 中,使用 C#,我有一个带有 ListView 的 Forms 应用程序。我可以将项目添加到列表视图中。但是,一旦我尝试将这些项目分类,它们就不会出现。我知道群组为空时不会出现,但我已确认这些群组不是为空的。另外,我 am 设置 listView.ShowGroups = true。如果我将项目添加到其中一个组,而不是第二个组,“默认”组确实会显示...只是我添加的组没有出现!

这是我正在使用的代码:

this.listView.View = View.Details;
this.listView.Columns.Add("Column1");
this.listView.Columns[0].Width = this.listView.Width - 20;
this.listView.HeaderStyle = ColumnHeaderStyle.None;
this.listView.Groups.Add(new ListViewGroup("A"));
this.listView.Groups.Add(new ListViewGroup("D"));


foreach(item i in Class.Items)
{
    if (i.Type == Type.A)
        this.listView.Groups[0].Items.Add(i.Name);
    else
        this.listView.Groups[1].Items.Add(i.Name);
}
this.listView.ShowGroups = true;

有人知道我的群组为什么没有出现吗?这是我所看到的屏幕截图:

【问题讨论】:

  • +1 幽默的屏幕截图。

标签: c# .net winforms listview


【解决方案1】:

试试这个代码:

listView.Groups[0].Items.Add(listView.Items.Add("Item 1"));

【讨论】:

    【解决方案2】:

    如果在 ShowGroups 值设置为 false 时将项目添加到列表视图,然后 ShowGroups 属性稍后设置为 true,则列表框将在显示组时显示为空白(但当 ShowGroups 为假)。

    ShowGroups 在构建列表时需要为真。

    时机也很重要。列表框需要在 ShowGroups 属性设置为 false 之前呈现。我在我的对话框显示事件中设置它。

    我在 .Net 4.0 中工作时发现了这一点。

    【讨论】:

    • 哇,谢谢!不是很直观!可以预料,更改 ShowGroups 会引发 listview 重绘...
    【解决方案3】:

    您不应将项目添加到组中,而应将项目添加到列表视图中,并将每个项目的 Group 属性设置为所需的组。

    你可以在MSDN link看到一个例子

    【讨论】:

    • 做到了。嗯,直觉上这对我来说并不是一种自然的方式,但是……显然这对当时的 MSFT 来说是有意义的。谢谢!
    • @JToland:我认为一个可能的原因是您可以在运行时轻松地将项目从一组移动到另一组,而无需重新创建项目。但更有可能的是,这也与在 XP 之前的 Windows 版本下不显示组有关,因此这些项目需要由 ListView 本身拥有才能在该环境中显示。
    • @Cody:是的,你可能是对的。无论如何,我同意 JToland 这不是很直观:D
    • Crappy api,至少 Group Add 应该抛出异常。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多