【问题标题】:How can I update the value of a DataGridViewCheckBoxCell immediately?如何立即更新 DataGridViewCheckBoxCell 的值?
【发布时间】:2011-02-22 10:49:18
【问题描述】:

我在DataGridView 控件中使用DataGridViewCheckBoxCell。当用户单击复选框时,我会验证某些条件并将其值设置为 false。但是,该复选框保持选中状态,直到用户移动到下一行。我该如何解决这个问题,以便立即更新值

【问题讨论】:

  • @geek: WinForms 复选框没有 AutoPostBack 属性
  • 对不起,我以为是 asp.net gridview :)

标签: c# .net winforms datagridview datagridviewcheckboxcell


【解决方案1】:

首先提交更改,然后将控制权更改到另一个单元格并返回。

【讨论】:

    【解决方案2】:

    是的......你现在可能并不关心,但我最近遇到了我认为是同样的问题:如果你点击选中的复选框是它被选中的直接原因或未选中,那么实际上,您需要做的就是处理 DataGridView 的 CellDirtyStateChanged,并告诉网格自行 CommitEdit。另一方面,如果 DataGridViewCheckBoxColumn 中的复选框由于任何其他原因更改状态,而不是因为您只是单击它(例如,使用上下文菜单批量切换它们的结果,或者您在验证某些内容后以编程方式设置它) ,并且该复选框具有焦点,据我所知,除了取消选择它会强制它以正确的选中状态重新绘制自身。

    可悲的是,我没有办法解决这个问题,所以我作弊:在负责以编程方式切换单元格复选框的代码之后,如果网格的 IsCurrentCellInEditMode 为真,并且其 CurrentCell 的列是复选框列,我只是将 CurrentCell 移动了一个列过去然后回来。不是最漂亮的解决方案,但我厌倦了与这种控制作斗争,而且它没有任何明显的闪烁或任何东西,所以......足够好。

    当然,如果您只是验证被点击的一个单元格,可能有更简单的方法,包括验证值本身,而不是在点击事件中处理验证并自己推送更改的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-18
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多