使用复选框制作列表视图就像复选框一样

问题描述 投票:0回答:1

我需要一个复选框列表,我可以添加只读项目(因此使用列表视图,因此我可以使项目灰显并让用户不选择它)。

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

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

但在这种情况下,当用户点击复选框而不是项目时,没有任何反应,选择任何其他复选框也会检查突出显示的项目和所选新项目的复选框。

有没有办法让项目像复选框一样?我尝试过使用数据网格视图,但我遇到了类似的问题,很多代码都是基于这个列表视图的操作。

vb.net listview checkbox checkboxlist
1个回答
0
投票

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

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

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
© www.soinside.com 2019 - 2024. All rights reserved.