在没有控制键的情况下在DataGridview中进行多选(也可以更改所选项的字体颜色)

时间:2013-11-26 08:01:40

标签: vb.net datagridview

Multiselect如何在DataGridView中不必按控制键(仅通过鼠标点击),并在选中时将所有选定行的字体颜色更改为红色,未选中时将其更改为黑色。我正在使用vb.net谢谢


找到解决我问题的方法。希望这有帮助:

我使用DataGridView的CellClick和RowPrePaint

Private Sub dgvUDF_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvUDF.CellClick
        If (Me.selectedRowIndexes.IndexOf(e.RowIndex) > -1) Then
            Me.selectedRowIndexes.Remove(e.RowIndex)
        Else
            Me.selectedRowIndexes.Add(e.RowIndex)
            Me.dgvUDF.CurrentCell = Nothing
        End If
End Sub

Private Sub dgvUDF_RowPrePaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles dgvUDF.RowPrePaint
        If (Me.selectedRowIndexes.IndexOf(e.RowIndex) > -1) Then
            dgvUDF.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Crimson
        Else
            dgvUDF.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Black
        End If
    End Sub

1 个答案:

答案 0 :(得分:0)

' //这有效:我在代码中添加了列表。

Dim selectedRowIndexes As New List(Of String)

Private Sub dgvUDF_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellClick
    If (Me.selectedRowIndexes.IndexOf(e.RowIndex) > -1) Then
        Me.selectedRowIndexes.Remove(e.RowIndex)
    Else
        Me.selectedRowIndexes.Add(e.RowIndex)
        Me.DataGridView2.CurrentCell = Nothing
    End If
End Sub

Private Sub dgvUDF_RowPrePaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles DataGridView2.RowPrePaint
    If (Me.selectedRowIndexes.IndexOf(e.RowIndex) > -1) Then
        DataGridView2.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Crimson
    Else
        DataGridView2.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Black
    End If
End Sub

结束班