bool IsOverCheckBox(int r, int c, MouseEventArgs e) { GridStyleInfo style = grid.Model[r, c]; GridCellRendererBase renderer = grid.CellRenderers[style.CellType]; renderer.PerformLayout(r, c, style, grid.RangeInfoToRectangle(GridRangeInfo.Cell(r, c))); if (renderer.RaiseHitTest(r, c, e, null) == GridHitTestContext.CheckBoxChecker) { return(true); } return(false); }
private void gridGroupingControl1_TableControlCellClick(object sender, GridTableControlCellClickEventArgs e) { GridTableCellStyleInfo style = (GridTableCellStyleInfo)e.TableControl.Model[e.Inner.RowIndex, e.Inner.ColIndex]; GridTableCellStyleInfoIdentity id = style.TableCellIdentity; if (id.TableCellType == GridTableCellType.ColumnHeaderCell ) { // Workaround - gridGroupingControl1_TableControlCellButtonClicked does not get hit so // we'll check for the area where the button is and set e.Inner.Cancel = true GridCellRendererBase r = e.TableControl.CellRenderers[style.CellType]; r.PerformLayout(e.Inner.RowIndex, e.Inner.ColIndex, style, e.TableControl.RangeInfoToRectangle(GridRangeInfo.Cell(e.Inner.RowIndex, e.Inner.ColIndex))); if (r.RaiseHitTest(e.Inner.RowIndex, e.Inner.ColIndex, e.Inner.MouseEventArgs, null) == GridHitTestContext.CellButtonElement) { string column = (id.Column != null) ? id.Column.ToString() : ""; string s = "Clicked on " + id.TableCellType.ToString() + "(" + column + ", " + id.DisplayElement.GetType().Name + ")"; MessageBox.Show(s); e.Inner.Cancel = true; } } }