2014-01-08 4 views
1

У меня есть DataGridView, привязанный к DataSet. У меня есть столбец CheckBox. Когда я хочу, чтобы строка меняла цвет, как только пользователь проверяет определенную строку. Я могу изменить цвет с помощью моего кода, но по какой-то причине мне неизвестен .. цвет меняется только тогда, когда я покидаю ячейку.Изменение цвета строки DataGridView при проверке CheckBox.

Private Sub DataGridView1_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged 
     If DataGridView1.Columns(e.ColumnIndex).Name = "ColCheck" Then 
      If DataGridView1.Rows(e.RowIndex).Cells("ColCheck").Value = True Then 

       DataGridView1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightGreen 
       ''' blah blah blah... 
+0

как о добавлении ' DataGridView1.Refresh() '? –

+0

По-прежнему та же история. – Arbaaz

+0

Использовать CellEndEdit ... – Codexer

ответ

0

написать это выше код

dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit); 
0

Попробуйте это ...

Private Sub dataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) 
If DataGridView1.Columns(e.ColumnIndex).Name = "ColCheck" Then 
     If DataGridView1.Rows(e.RowIndex).Cells("ColCheck").Value = True Then 

    Dim isChecked As Boolean = DirectCast(dataGridView1(e.ColumnIndex, e.RowIndex).FormattedValue, [Boolean]) 
    If isChecked Then 
       DataGridView1.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.LightGreen 
    End If 
End If 
    End If 
End Sub 
+0

Обязательно добавьте ... Обрабатывает CellValueChanged до конца sub. По какой-то причине это не пошло на меня. – Codexer

+0

Этот код Не работает ... Однако я нашел решение .. спасибо за ваш ответ. – Arbaaz

+0

Чем я не уверен, просто побежал и работал на меня? Удачи – Codexer

0

Оказывается, что я должен использовать CurrentCellDirtyStateChanged

Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged 
     If DataGridView1.IsCurrentCellDirty Then 
      DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit) 
     End If 
    End Sub 
+0

Конечно, грязный один lol, есть больше способов, чем один;) – Codexer

+0

Как вы можете видеть, я еще не отметил свой ответ как ответ, если кто-то может дать мне другой код, который будет работать. Я был бы более чем рады принять это. Плюс я получу +2: D – Arbaaz

Смежные вопросы