0

我尝试在 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
4

1 回答 1

0

我解决了!!我在运行表单之前在主程序中添加了这条语句:Application.EnableVisualStyles()。使用此代码,我看到了分组。

于 2018-08-21T20:12:07.117 回答