我尝试在 listview 对象中为电影标题的第一个字母添加一个列表。
我在互联网上发现了一个代码,我从中受到启发来更改我的代码。在调试中,我看到由首字母表示的正确分配的组(我已将不以字母开头的所有内容分组为字符“#”)。在包含 listview 对象的表单中,列表没有分组,我不明白为什么。
非常感谢您的任何建议。
这是我写的代码
lvFilmDetail.BeginUpdate()
lvFilmDetail.Items.Clear()
Dim ws_firstLetter_svd As Char = ""
Dim ctr_group As Integer = -1
For Each ws_film In ws_elenco_film
Dim item As New ListViewItem(ws_film.Get_Titolo)
CreateGroup(ws_film.Get_Titolo, ws_firstLetter_svd, item)
lvFilmDetail.Items.Add(item)
Next
lvFilmDetail.Columns.Item(4).Width = 0
lvFilmDetail.EndUpdate()
End If
End Sub
Private Sub CreateGroup(ByVal ws_title As String, ByRef ws_firstLetter_svd As Char, ByRef item As ListViewItem)
Dim ws_firstLetter As Char
ws_firstLetter = ws_title
Dim lvFilmDetailGroup As ListViewGroup
Select Case Asc(ws_firstLetter)
Case < 65
ws_firstLetter = "#"
Case > 122
ws_firstLetter = "#"
Case 91 To 96
ws_firstLetter = "#"
End Select
If ws_firstLetter <> ws_firstLetter_svd Then
lvFilmDetailGroup = New ListViewGroup(ws_firstLetter)
lvFilmDetail.Groups.Add(lvFilmDetailGroup)
End If
item.Group = lvFilmDetailGroup
End Sub
我比较了我的项目和示例中的列表视图的属性,除了网格和示例中不存在的上下文菜单之外,我没有发现任何差异
这些是我的程序和示例的屏幕截图:
分组错误:
分组示例:
这是我的代码经过一些更改后,我仍然遇到同样的问题:
Dim lvFilmDetailGroup As ListViewGroup
Dim ws_firstLetter As Char = ""
Dim ws_firstLetter_svd As Char
Dim ctr_group As Integer = -1
For Each ws_film In ws_elenco_film
ws_firstLetter = ws_film.Get_Titolo
Select Case Asc(ws_firstLetter)
Case < 65
ws_firstLetter = "#"
Case > 122
ws_firstLetter = "#"
Case 91 To 96
ws_firstLetter = "#"
End Select
If ws_firstLetter <> ws_firstLetter_svd Then
'$$$ accorpare caratteri diversi dalle lettere
ctr_group += 1
lvFilmDetailGroup = New ListViewGroup(ctr_group.ToString, ws_firstLetter)
lvFilmDetail.Groups.Add(lvFilmDetailGroup)
ws_firstLetter_svd = ws_firstLetter
End If
Dim item As New ListViewItem(ws_film.Get_Titolo)
item.Group = lvFilmDetailGroup
lvFilmDetail.Items.Add(item)
Next
lvFilmDetail.Columns.Item(4).Width = 0
lvFilmDetail.EndUpdate()
End If