Я, наконец, смог сделать это следующим образом!
- вам нужно обрабатывать два события:
GridView.CellValueChanged
GridView.CustomDrawCell
- Вы должны следить за показателями каждого изменённые клетки. Итак, нам нужен Список
Создайте класс и три поля в нем.
Public Class UpdatedCell
'UC means UpdatedCll
Public Property UCFocusedRow As Integer
Public Property UCFocusedColumnIndex As Integer
Public Property UCFieldName As String
Public Sub New()
UCFocusedRow = -1
UCFocusedColumnIndex = -1
UCFieldName = String.Empty
End Sub
End Class
Инициализировать список в вашей функции Form1_Load
.
Public lst As List(Of UpdatedCell) = New List(Of UpdatedCell)()
Теперь в GridView.CellValueChanged
случае, выполните следующие действия:
Private Sub grdView_CellValueChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs)
Dim currCell As New UpdatedCell
currCell.UCFocusedRow = e.RowHandle
currCell.UCFocusedColumnIndex = e.Column.AbsoluteIndex
currCell.UCFieldName = e.Column.FieldName
lst.Add(currCell)
End Sub
Теперь, сделайте следующее GridView.CustomDrawCell
события:
Private Sub grdView_CustomDrawCell(sender As Object, e As RowCellCustomDrawEventArgs)
Dim prevColor As Color = e.Appearance.BackColor
For Each c As UpdatedCell In lst
If e.RowHandle = c.UCFocusedRow And
e.Column.AbsoluteIndex = c.UCFocusedColumnIndex And
e.Column.FieldName = c.UCFieldName Then
e.Appearance.BackColor = Color.Yellow
Else
If Not e.Appearance.BackColor = Color.Yellow Then
e.Appearance.BackColor = prevColor
End If
End If
Next
End Sub
Обратите внимание, что аргумент e As RowCellCustomDrawEventArgs
содержит всю необходимую информацию. Нам просто нужно заботиться об отредактированных индексах ячеек, потому что GridView.CustomDrawCell
вызывает каждый раз, когда изменяется фокус строки/столбца.
Посмотрите результат.
Перед ![enter image description here](https://i.stack.imgur.com/olZ5o.png)
И После ![enter image description here](https://i.stack.imgur.com/4Vme6.png)
ПРИМЕЧАНИЕ, что желтые клетки имеют различные значения, которые я изменил с помощью встроенного/INPLACE редактора.
С благодарностью