Фоновый цвет не окрашивает всю ячейку, только текст

Для Интернета я вытащил и изменил некоторый код, чтобы изменить цвет фона текущей ячейки в datagridview при редактировании текста. Проблема в том, что фоновый цвет, кажется, меняется только в тексте ячеек, а не во всей ячейке (кажется, что в ячейке есть поле в 3 пикселя, имеющее исходный цвет). Ниже приведен код, который я использую:

Public Class Form1

Dim a, b As Integer
Dim myvalue As String

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    a = 0
    Do While a < 10
        Me.DataGridView1.Rows.Add()
        a += 1
    Loop
End Sub

Private EditingControl As DataGridViewTextBoxEditingControl

Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
    EditingControl = e.Control
    AddHandler EditingControl.TextChanged, AddressOf EditingControl_TextChanged
End Sub

Private Sub EditingControl_TextChanged(sender As Object, e As EventArgs)
    EditingControl.BackColor = Color.White
End Sub

Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
    If EditingControl IsNot Nothing Then
        RemoveHandler EditingControl.TextChanged, AddressOf EditingControl_TextChanged
    End If
    EditingControl = Nothing
End Sub
End Class

Кто-нибудь знает, что я сделал не так с кодом?


person Jarron    schedule 24.03.2015    source источник


Ответы (1)


EditingControl помещается на панель и имеет поле в 3 пикселя.

Окрашивание родительской панели решает вашу проблему:

Private Sub EditingControl_TextChanged(sender As Object, e As EventArgs)
    EditingControl.BackColor = Color.White
    EditingControl.Parent.BackColor = Color.White
End Sub

Кстати, в классе DataGridView уже есть свойство EditingControl.

person Bioukh    schedule 24.03.2015