代码之家  ›  专栏  ›  技术社区  ›  Tim Fehr

使带有复选框的listview类似于复选框列表

  •  0
  • Tim Fehr  · 技术社区  · 7 年前

    但是,当我单击该项目时,复选框不会切换。但是当我将以下代码添加到item click事件时,

    Private Sub LVSubFiles_Click(sender As Object, e As EventArgs) Handles LVSubFiles.Click
            If LVSubFiles.Items(LVSubFiles.FocusedItem.Index).ForeColor <> Drawing.Color.Gray Then
                If LVSubFiles.Items(LVSubFiles.FocusedItem.Index).Checked = True Then
                    LVSubFiles.Items(LVSubFiles.FocusedItem.Index).Checked = False
                Else
                    LVSubFiles.Items(LVSubFiles.FocusedItem.Index).Checked = True
                End If
            End If
    End Sub
    

    但是在这种情况下,当用户单击复选框而不是项目时,什么也不会发生,同时选择任何其他复选框都会选中高亮显示的项目和所选新项目的复选框。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Tim Fehr    6 年前

    对于那些发现这个问题的人。我最终选择了一个隐藏的专栏,跟踪“只读”项目。每当列表更新时,只读标记都会将项目变为灰色,但仍允许对其进行检查。

    关于列表如何与用户交互,我将动作项分为两类,这似乎很顺利。无论单击项目的哪个部分,用户都可以通过单击进行选择/取消选择。

    Private Sub dgvSubFiles_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvSubFiles.CellContentClick
        If dgvSubFiles(dgvSubFiles.Columns("chkSubFiles").Index, dgvSubFiles.CurrentCell.RowIndex).Value = True Then
            dgvSubFiles(dgvSubFiles.Columns("chkSubFiles").Index, dgvSubFiles.CurrentCell.RowIndex).Value = False
        Else
            dgvSubFiles(dgvSubFiles.Columns("chkSubFiles").Index, dgvSubFiles.CurrentCell.RowIndex).Value = True
        End If
    End Sub
    
    Private Sub dgvSubFiles_SelectionChanged(sender As Object, e As EventArgs) Handles dgvSubFiles.SelectionChanged
        dgvSubFiles.ClearSelection()
    End Sub