Это вопрос форматирования (представления), поэтому вы можете использовать событие CellFormatting , которое возникает, когда ячейке DataGridView
необходимо отобразить ее Value
.
.
Поскольку вы хотите изменить Style.BackColor
текущей отформатированной ячейки, лучше установить ячейку DefaultCellStyle вместо строки.
Убедитесь, что текущая ячейка соответствует критериям (это DataGridViewCheckBoxCell
и Value
не равно нулю). Отфильтруйте по e.ColumnIndex
или имени столбца, если необходимо, чтобы сузить столбцы, к которым применяется это форматирование.
Если все это подтвердится, установите Style.BackColor
либо на Color.Yellow
, если он отмечен (e.Value = True
), либо верните исходное значение DefaultCellStyle.BackColor
.
Private Sub dgCustomerNumber_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles dgCustomerNumber.CellFormatting
If e.Value IsNot Nothing AndAlso TypeOf dgCustomerNumber.Columns(e.ColumnIndex).CellTemplate Is DataGridViewCheckBoxCell Then
dgCustomerNumber(e.ColumnIndex, e.RowIndex).Style.BackColor =
If(CType(e.Value, Boolean),
Color.Yellow,
dgCustomerNumber.Columns(e.ColumnIndex).DefaultCellStyle.BackColor)
End If
End Sub
Редактировать
Определите во время выполнения пользовательский задний цвет ячейки для DataGridViewCheckBoxColumns
.
После того, как вы установили DataGridView.DataSource
, проанализируйте автоматически сгенерированный Columns
и установите DefaultCellStyle.BackColor
на определенный цвет, когда анализируемый тип является желаемым:
'Set the DataSource
DataGridView1.DataSource = [MyDataSource]
For Each col As DataGridViewColumn In DataGridView1.Columns
If TypeOf col Is DataGridViewCheckBoxColumn Then
col.DefaultCellStyle.BackColor = Color.Magenta
End If
Next