C#ListView在组中显示为空白

JTo*_*and 8 .net c# listview winforms

在VS2005中,使用C#,我有一个带有ListView的Forms应用程序.我可以将项目添加到列表视图中.但是,只要我尝试将这些项目分组,它们就不会出现.我知道当它们是空的时候不会出现组,但我已经确认这些组不是空的.另外,我正在设置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;
Run Code Online (Sandbox Code Playgroud)

有没有人对我的团体没有出现的原因有任何想法?这是我看到的屏幕截图:

替代文字

dig*_*All 11

您不应该向组添加项目,而是将项目添加到列表视图中,并且对于每个项目,将其Group属性设置为所需的组.

您可以在此MSDN链接中查看示例

  • @JToland:我认为一个可能的原因是,您可以在运行时轻松地将项目从一个组移动到另一个组,而无需重新创建项目.但更可能的是,它还与在XP之前的Windows版本下不显示组的事实有关,因此这些项目需要由`ListView`本身拥有才能在该环境中显示. (3认同)
  • @Cody:是的,你可能是对的.无论如何,我同意JToland的说法并不直观:D (2认同)
  • 蹩脚的api,至少Group Add应该抛出异常. (2认同)

小智 7

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

ShowGroups 在构建列表时需要成立.

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

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