我想创建一个类别列表,并将每个类别映射到ListViewGroup。
作为一个开始/存根,我有这个代码(“listApplications”是一个ListView):
private ListViewGroup GetGroupForCategoryName(string ACategoryName) {
return listApplications.Groups[0];
}
...但我明白了,“索引超出范围。必须是非负数且小于集合的大小。参数名称:索引”
由于ListView有一个默认组(所以我已阅读),我假设元素0将是该默认组。我是否需要显式创建默认组以使0不超出范围,或者......?
答案 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上的示例可以为您提供一些建议。