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.
C#
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; } }
VB
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: