VB.net DataGridViewで選択された行の色を変える方法

2018.3.11

選択された行の色を変える

事前に、データグリッドをリードオンリーにして、用意した処理からのみ、行の色が変わるようにする。

myDgv.ReadOnly = True

コードはこんな感じ。 クリックされたとき、前に選択されていた行の色を元に戻したいので、前に選んでいた行と色を変数に入れています。

Private BeforeBackColor As Color
Private BeforeForeColor As Color
Private BeforeSelectRow As Integer = -1

Private Sub DataGridView_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles myDgv.CellContentClick
    Dim dgv As DataGridView = CType(sender, DataGridView)
    If dgv.Columns(e.ColumnIndex).Name = "ボタンカラム" Then
        If Me.BeforeSelectRow > -1 Then
            dgv.Rows(Me.BeforeSelectRow).DefaultCellStyle.BackColor = Me.BeforeBackColor
            dgv.Rows(Me.BeforeSelectRow).DefaultCellStyle.ForeColor = Me.BeforeForeColor
        End If
        Me.BeforeBackColor = dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor
        Me.BeforeForeColor = dgv.Rows(e.RowIndex).DefaultCellStyle.ForeColor
        Me.BeforeSelectRow = e.RowIndex
        dgv.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Blue
        dgv.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.White
    End If
End Sub