I take it that knowing the bool value is the opposite of teh value you are currently getting is not sufficient for your needs?
Anyway, one thing you can to is to explicitly change it your self and cancel the event so the grid does not reset it as part of its normal processing.
private void gridGroupingControl1_TableControlCheckBoxClick(object sender, GridTableControlCellClickEventArgs e)
{
GridRecordRow rec = this.gridGroupingControl1.Table.DisplayElements[e.Inner.RowIndex] as GridRecordRow;
if(rec != null)
{
DataRowView dr = rec.GetData() as DataRowView;
dr["bool"] = ! (bool) dr["bool"];
dr.EndEdit(); //maybe???
e.Inner.Cancel = true;
Console.WriteLine(dr["bool"]);
}
}