我在我的.net核心Winform数据GridVew中有一个复选框列。
我已经将复选框放大,以便用户更容易单击。
我在CellPainting
里面的代码,
e.PaintBackground(e.CellBounds, true);
ControlPaint.DrawCheckBox(e.Graphics, e.CellBounds.X + 1, e.CellBounds.Y + 5,
e.CellBounds.Width - 10, e.CellBounds.Height - 10,
(bool)e.FormattedValue ? ButtonState.Checked : ButtonState.Normal);
e.Handled = true;
这些是我的参考链接,
How to change checkBox Size in DatagridviewCheckboxCell
Increase the size of Checkbox in #DataGridView in C#
结果如下所示:
但问题是点击区域,即使复选框的大小更大,我意识到可点击区域仍然是原来的大小。
如下图所示,绿色区域是可点击区域,
我想使可点击区域与复选框的大小一样大,如下所示,
有没有解决的办法?
1条答案
按热度按时间e7arh2l61#
当你用鼠标点击一个
DataGridViewCheckBoxCell
来切换 Checked 状态时,你必须点击单元格内的content,点击单元格内的其他地方并不会改变什么。DataGridViewCheckBoxCell
的内容就是那个小方框区域。所以,仅绘制较大的框不会调整大小或重新定位(根据列的DefaultCellStyle.Alignment
)那个 content 区域和它保持不变。你需要编写代码来告诉,内容区域已经被点击,相关的基方法和事件应该被调用。我将创建自定义
DataGridViewCheckBox
列和单元格来应用此要求。在项目的命名空间中,从
DataGridViewCheckBoxColumn
衍生新类别:另一个是从
DataGridViewCheckBoxCell
衍生而来的:在网格的设计器中重新生成并 checkout 新的列类型。
如果您有数据系结网格,请将
AutoGenerateColumns
属性设定为false
,然后手动新增数据行。例如: