Category / Section
How to choose the checkbox checked or unchecked the first click when the checkbox is in the panel and inside a cell in WinForms GridControl?
1 min read
Choose the checkbox selection in a grid
The first click of the generic cell tries to activate the control of the cell, but when the control is a panel or user control, then the generic cell click is not sufficient enough to activate the proper control.
Solution
When your control is a panel that has a checkbox on it, you must handle the control's Enter event, and in the event, set the focus to the child control you want to get it from.
The following code examples in C# and VB.NET click
the checkbox on the first click.
this.gridControl1[3, 4].CellType = "Control";
// Set the panel as a control for the cells[3,4].
this.gridControl1[3, 4].Control = panel1;
void panel1_Enter(object sender, EventArgs e)
{
if (Control.MouseButtons == MouseButtons.Left)
{
Point loc = Control.MousePosition;
Point p = this.panel1.PointToClient(loc);
if (this.checkBox1.Bounds.Contains(p))
this.checkBox1.Checked = !this.checkBox1.Checked;
if( this.checkBox2.Bounds.Contains(p))
this.checkBox2.Checked = ! this.checkBox2.Checked;
}
}Me.gridControl1(3, 4).CellType = "Control"
'Set the panel as a control for the cells[3,4].
Me.gridControl1(3, 4).Control = panel1
Private Sub panel1_Enter(ByVal sender As Object, ByVal e As EventArgs)
If Control.MouseButtons = MouseButtons.Left Then
Dim loc As Point = Control.MousePosition
Dim p As Point = Me.panel1.PointToClient(loc)
If Me.checkBox1.Bounds.Contains(p) Then
Me.checkBox1.Checked = Not Me.checkBox1.Checked
End If
If Me.checkBox2.Bounds.Contains(p) Then
Me.checkBox2.Checked = Not Me.checkBox2.Checked
End If
End If
End Sub
Figure 1: GridControl cell with Panel
Samples: