【问题标题】:DataGridViewCheckBoxColumn does not display CheckBoxCell for all rows [closed]DataGridViewCheckBoxColumn 不为所有行显示 CheckBoxCell [关闭]
【发布时间】:2018-01-31 19:21:46
【问题描述】:

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

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


更明确地说:

为什么会这样

MyDataGridView.Columns.Insert(0, myCheckBoxColumn);

当这不起作用时

MyDataGridView.Columns.Insert(7, myCheckBoxColumn);

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


编辑:

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

MyDataGridView.Columns.Add(myCheckBoxColumn);

已解决:

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

【问题讨论】:

  • 当你投反对票时,至少解释一下原因......
  • 我猜是因为标题含糊不清。
  • 这样更清楚吗?

标签: c# winforms datagridview datagridviewcheckboxcell


【解决方案1】:

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

MyDataGridView.Columns.Add(myCheckBoxColumn);

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

【讨论】:

  • 我试过了,我的行为与描述的相同。复选框单元格不显示正方形,我无法与之交互。我唯一更改的是将插入调用替换为添加调用。
  • 网格上有自定义的绘画代码吗?
  • 你真的帮我弄清楚了。在绘画事件中,DataGridViewCellPaintingEventArgs 最后将属性 Hanled 设置为 true。这导致了我的问题。我将更新我的帖子以包含它,以防它可以帮助其他人,我会将帖子标记为已回答并将您的帖子标记为答案。谢谢!
  • 太棒了...很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多