【问题标题】:Unchecking the user checked checkbox in the datagridview cell取消选中 datagridview 单元格中的用户选中复选框
【发布时间】:2012-10-27 03:06:17
【问题描述】:

我的DataGridView 中有一个列,其中DataGridViewCheckBoxColumn 作为列模板。当用户选中复选框时,如果它不符合某些条件,我需要以编程方式取消选中它。我已经这样做了,但是这个取消选中逻辑只有在我手动更改单元格的焦点后才会生效。我尝试以编程方式更改焦点,但没有奏效。有什么解决办法吗?

【问题讨论】:

  • 需要更多信息。你想用 JS 做这个吗?可以使用 Ajax 吗?
  • 不能使用 ajax ..它是一个 windows 应用程序..
  • 抱歉错过了winforms标签。
  • @McArthey 没必要,伙计。我在你问我之后添加了标签。

标签: c# winforms datagridview checkbox


【解决方案1】:

最近我遇到了类似的问题。在我的情况下,将单元格值设置为 false 或使用 TrueValue 和 FalseValue(对于 DataGridViewCheckBoxCell)失败。

最后我设法通过简单的 DataGridView 方法实现了我想要的(取消检查某些条件是否失败):

dataGridView1.CancelEdit()

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我通过很少的代码更改找到了答案。我使用了datagridview的取消编辑功能。对于之前要触发的复选框值更改,我在里面使用了这个代码 CurrentCellDirtyStateChanged 事件。

    CommitEdit(DataGridViewDataErrorContexts.Commit) 
    

    现在我把它改成了。

    CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange) 
    

    又叫了

    CancelEdit()
    

    回滚更改。

    【讨论】:

    • 我能知道你在哪里调用 CancelEdit 方法..因为在我的情况下它失败了。
    【解决方案3】:

    只需将DataGridViewCell.Value 属性的值设置为false(或true):

    ((DataGridViewCheckBoxCell)row.Cells[CheckBoxColumn.Index]).value = false;
    

    【讨论】:

    • 没有 ria 我试过了,但只有当我从单元格中改变焦点时它才会生效
    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多