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
答案 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
结束班