PJW PJW -4 years ago 179
C# Question

DataGridView checkbox event

I have a winforms app and want to trigger some code when a checkbox embedded in a

DataGridView
control is checked / unchecked. Every event I have tried either


  1. Triggers as soon as the
    CheckBox
    is clicked but before its checked state changes, or

  2. Triggers only once the
    CheckBox
    looses its focus



I can't seem to find event that triggers immediately after the checked state changes.




Edit:

What I am trying to achieve is that when the checked state of a
CheckBox
in one
DataGridView
changes, the data in two other
DataGridView
s changes. Yet all the events I have used, the data in the other grids only changes after the
CheckBox
in the first
DataGridView
looses focus.

Answer Source

To handle the DatGridViews CheckedChanged event you must first get the CellContentClick to fire (which does not have the CheckBoxes current state!) then call CommitEdit. This will in turn fire the CellValueChanged event which you can use to do your work. This is an oversight by Microsoft. Do some thing like the following...

private void dataGridViewSites_CellContentClick(object sender, 
    DataGridViewCellEventArgs e)
{
    dataGridViewSites.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

/// <summary>
/// Works with the above.
/// </summary>
private void dataGridViewSites_CellValueChanged(object sender, 
    DataGridViewCellEventArgs e)
{
    UpdateDataGridViewSite();
}

I hope this helps.

P.S. Check this article https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged(v=vs.110).aspx

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download