DataGridViewCheckBoxColumn 不显示所有行的 CheckBoxCell

DataGridViewCheckBoxColumn does not display CheckBoxCell for all rows

几个小时以来,我一直在尝试通过设计器和代码将 DataGridViewCheckBoxColumn 添加到现有的 DataGridView。 CheckBoxCell 未在 UI 上显示正方形(或状态)。但是,当我尝试找到一些我找到的代码时(忘记更改索引),我让它工作并正常显示。

所以我想知道为什么不能在 DataGridView.Columns 的最后一个索引处使用 DataGridViewCheckBoxColumn?


更明确地说:

为什么这样做有效

MyDataGridView.Columns.Insert(0, myCheckBoxColumn);

当这不起作用时

MyDataGridView.Columns.Insert(7, myCheckBoxColumn);

注意:myCheckBoxColumn 变量在两行之间没有变化。完全一样,与实际问题无关


编辑:

使用下面的添加方法并不能解决问题。

MyDataGridView.Columns.Add(myCheckBoxColumn);

已解决:

我的问题与 DataGridView 的 CellPainting 事件的处理有关。在函数结束时,DataGridViewCellPaintingEventArgs 的 属性 Handled 被设置为 true。这导致 DataGridViewCheckBoxColumn 无法正确显示。

如果要在右侧添加一列,请改用DataGridViewColumnCollection的Add方法:

MyDataGridView.Columns.Add(myCheckBoxColumn);

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumncollection.add(v=vs.110).aspx