title: DataGridView event for checked change
body: <p>I have a <code>DataGridView</code> which has a bunch of columns plus a checkBoxColumn called <strong>IsChecked</strong>.</p>
  
  <p>I want to raise an event whenever a row's checked state changes. Checking or Unchecking a row may be done either when user clicks the checkBox or when they press <em>space</em> key on a row.</p>
  
  <p>this is how I added checkBoxColumn to my grid:</p>
  
  <pre><code>dgvMain.Columns.Add(new DataGridViewCheckBoxColumn { 
              Name = "IsChecked" , 
              Width = 20, 
              Visible = false,
              HeaderText = "",
              SortMode = DataGridViewColumnSortMode.NotSortable,
              DisplayIndex = Columns.Count, //to be displayed as last column
              ValueType = typeof(bool),
              FalseValue = false,
              TrueValue = true
          });
  </code></pre>
  
  <p>and this is how I check the cell when space key is pressed:</p>
  
  <pre><code>private void dgvMain_KeyDown(object sender, KeyEventArgs e)
  {
       foreach (DataGridViewRow row in dgvMain.SelectedRows)
       {
           bool? checkState = (bool?)row.Cells["IsChecked"].Value;
           if (checkState == null || checkState == false)
               checkState = true;
           else
               checkState = false;
           row.Cells["IsChecked"].Value = checkState;
       }
  
  }
  </code></pre>
  
  <p>Attempt # 1:<br>
  I tried using <code>CellEndEdit</code> event which only helped when you check the cell using mouse, but when I press space and the cell checks/unchecks <code>CellEndEdit</code> does not fire.</p>
  
  <p>Attempt # 2:<br>
  I tried using <code>CellValueChanged</code> event, which works fine when I press space, and also <strong>when I check the box using mouse and leave the row</strong> but when I check and uncheck the box multiple times, nothing happens. It seems like <code>CellValueChanged</code> raises when the cell is finished editing by mouse.</p>
  
  <p>Attempt # 3:<br>
  I Also tried using <code>CurrentCellDirtyStateChanged</code> which responds to first checked change caused by mouse but does not respond to rapid checked changes bu mouse, only the first one and also when you leave the row. <strong>I want to catch all checked changes, even if user changes the checked state rapidly by clicking on the checkBox, that counts too.</strong></p>
  
  <p>I'm not sure if there is any event already for this purpose or not. If not, how can I add an eventHandler for this column programmatically?</p>