使带有复选框的列表视图像复选框列表一样
Make listview with checkboxes act like checkbox list
我需要一个可以添加只读项目的复选框列表(因此使用列表视图,这样我就可以将项目变灰并防止用户选择它)。
但是,当我单击该项目时,复选框不会切换。但是当我在item点击事件中添加如下代码时,
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
但在这种情况下,当用户单击复选框而不是项目时,没有任何反应,选择任何其他复选框也会检查突出显示的项目和所选新项目的复选框。
有没有办法让项目像复选框列表一样工作?我试过使用数据网格视图,但我 运行 遇到了类似的问题,很多代码都是基于此列表视图的操作。
对于发现这个问题的人。我最终选择了一个跟踪 "read only" 项的隐藏列。每当列表更新时,只读标签会将项目变为灰色,但仍允许对其进行检查。
关于列表如何与用户交互,我将操作项移到了两个类别中,这似乎很顺利。无论单击项目的哪一部分,用户都可以通过单击 select/deselect。
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
我需要一个可以添加只读项目的复选框列表(因此使用列表视图,这样我就可以将项目变灰并防止用户选择它)。
但是,当我单击该项目时,复选框不会切换。但是当我在item点击事件中添加如下代码时,
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
但在这种情况下,当用户单击复选框而不是项目时,没有任何反应,选择任何其他复选框也会检查突出显示的项目和所选新项目的复选框。
有没有办法让项目像复选框列表一样工作?我试过使用数据网格视图,但我 运行 遇到了类似的问题,很多代码都是基于此列表视图的操作。
对于发现这个问题的人。我最终选择了一个跟踪 "read only" 项的隐藏列。每当列表更新时,只读标签会将项目变为灰色,但仍允许对其进行检查。
关于列表如何与用户交互,我将操作项移到了两个类别中,这似乎很顺利。无论单击项目的哪一部分,用户都可以通过单击 select/deselect。
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