Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged Dim dgCheckBoxCell As DataGridViewCheckBoxCell Try 'Checking whether the Datagridview Checkbox column is the first column If DataGridView1.CurrentCellAddress.X = 0 Then dgCheckBoxCell = DataGridView1.CurrentRow.Cells(0) If (DataGridView1.IsCurrentCellDirty) Then 'Checking for dirty cell DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit) 'If it is dirty, making them to commit If (dgCheckBoxCell.Value) Then 'Enabling the selected row editable for sample. DataGridView1.CurrentRow.Cells("EmpID").ReadOnly = False DataGridView1.CurrentRow.Cells("Designtn").ReadOnly = False DataGridView1.CurrentRow.Cells("Location").ReadOnly = False DataGridView1.CurrentRow.Cells("Experience").ReadOnly = False Else 'Disabling the selected row for editing. DataGridView1.CurrentRow.Cells("EmpID").ReadOnly = True DataGridView1.CurrentRow.Cells("Designtn").ReadOnly = True DataGridView1.CurrentRow.Cells("Location").ReadOnly = True DataGridView1.CurrentRow.Cells("Experience").ReadOnly = True End If End If End If Catch ex As Exception End Try End Sub