2012-06-05 50 views
2

當用戶取消選中datagridview行的複選框時,將顯示messagebox,如果用戶回答yes,則該行被刪除,如果用戶回答否則我需要重新選中該複選框。然而它實際上並沒有檢查,除非我點擊datagridview之後的任何地方。任何想法得到dgv更新?以編程方式在DataGridView中切換CheckBox單元格

Private Sub DataGridView2_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellValueChanged 

    If e.RowIndex <> -1 Then 
    Dim row As DataGridViewRow = DataGridView2.Rows(e.RowIndex) 
    If e.ColumnIndex = 0 Then 
     If row.Cells(0).Value = False Then 
     If MessageBox.Show("Delete view from database.", "Delete", MessageBoxButtons.YesNo) = DialogResult.Yes Then 
      DataGridView2.Rows.RemoveAt(e.RowIndex) 
     Else 
      row.Cells(0).Value = True 
      DataGridView2.Invalidate() 
     End If 
     End If 
    End If 
    End If 
End Sub 

Private Sub DataGridView2_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView2.CurrentCellDirtyStateChanged 
    If DataGridView2.IsCurrentCellDirty Then 
    DataGridView2.CommitEdit(DataGridViewDataErrorContexts.Commit) 
    End If 
End Sub 

回答

5

相反的Invalidate(),嘗試調用RefreshEdit(),像這樣:

Else 
    row.Cells(0).Value = True 
    DataGridView2.RefreshEdit() 
End If 
相關問題