是否自动创建默认ListView组?

时间:2012-03-30 16:37:51

标签: c# .net winforms listview

我想创建一个类别列表,并将每个类别映射到ListViewGroup。

作为一个开始/存根,我有这个代码(“listApplications”是一个ListView):

private ListViewGroup GetGroupForCategoryName(string ACategoryName) {
  return listApplications.Groups[0];
}

...但我明白了,“索引超出范围。必须是非负数且小于集合的大小。参数名称:索引”

由于ListView有一个默认组(所以我已阅读),我假设元素0将是该默认组。我是否需要显式创建默认组以使0不超出范围,或者......?

2 个答案:

答案 0 :(得分:2)

使用智能标记或代码添加组,然后分配。我不相信默认情况下会设置一个组。确保控件位于“详细信息视图”中。

VB

ListView1.ShowGroups = True
ListView1.View = View.Details

Dim iFirstGroup As Integer, iSecondGroup As Integer

iFirstGroup = ListView1.Groups.Add(New ListViewGroup("Test 1"))
iSecondGroup = ListView1.Groups.Add(New ListViewGroup("Test 2"))

ListView1.Columns.Add("Test Col")

ListView1.Items.Add(New ListViewItem("I'm in Group 1") With {.Group = ListView1.Groups(iFirstGroup)})
ListView1.Items.Add(New ListViewItem("I'm in Group 2") With {.Group = ListView1.Groups(iSecondGroup)})

C#

listView1.ShowGroups = true;
listView1.View = View.Details;

int iFirstGroup = 0;
int iSecondGroup = 0;

iFirstGroup = listView1.Groups.Add(new ListViewGroup("Test 1"));
iSecondGroup = listView1.Groups.Add(new ListViewGroup("Test 2"));

listView1.Columns.Add("Test Col");

ListViewItem lvi1 = new ListViewItem("I'm in Group 1");
lvi1.Group = listView1.Groups[iFirstGroup];

ListViewItem lvi2 = new ListViewItem("I'm in Group 2");
lvi2.Group = listView1.Groups[iSecondGroup];

listView1.Items.Add(lvi1);
listView1.Items.Add(lvi2);

答案 1 :(得分:1)

来自MSDN

  

要使用分组功能,请添加一个或多个ListViewGroup对象   ListView控件的Groups集合。设置组标题文本   和ListViewGroup构造函数中的标题对齐,或设置它们   使用ListViewGroup.Header和ListViewGroup.HeaderAlignment   属性。

因此,MSDN上的示例可以为您提供一些建议。