値に応じて DataGridView 行を強調表示したい。値が検証された場合は緑、そうでない場合は赤。
セルが以前にフォーマットされていない場合、緑と赤が表示されます。ただし、緑の行に戻って検証されていない値を変更すると、1 つのセルが赤に変わりません。緑のままです。
写真を参照してください:
1) エントリなし
2) 検証済みの値を入力
3) 戻って間違った値を入力
ご覧のとおり、最初のセルだけが赤ですが、行全体を赤にしたいです。
CellValidating イベントでセルをフォーマットしています。コードは次のとおりです。
Private Sub dgvItems_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles dgvItems.CellValidating
If e.ColumnIndex = ValueColumnIndex Then
If Not ValidateValue(e.FormattedValue) Then
Me.dgvItems.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightPink
Me.dgvItems.DefaultCellStyle.SelectionBackColor = Color.LightPink
Me.dgvItems.DefaultCellStyle.SelectionForeColor = Color.Black
e.Cancel = True
Else
Me.dgvItems.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight
Me.dgvItems.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText
Me.dgvItems.Rows(rowIndex).DefaultCellStyle.BackColor = Color.LightGreen
Me.dgvItems.Rows(rowIndex).DefaultCellStyle.ForeColor = Color.Black
End If
End If
End Sub
どんな助けでも感謝します。ありがとう。