C# 取消选中datagridview单元格中的用户复选框

C# 取消选中datagridview单元格中的用户复选框,c#,winforms,datagridview,checkbox,C#,Winforms,Datagridview,Checkbox,在我的DataGridView中有一个列,它将DataGridViewCheckBoxColumn作为列模板。当用户选中复选框时,如果它在某些条件下失败,我需要通过编程取消选中它。我已经这样做了,但是这个取消选中的逻辑只有在我手动改变单元格的焦点后才会生效。我试图通过编程改变焦点,但没有成功。有什么解决方法吗?只需将属性值设置为false(或true): CommitEdit(DataGridViewDataErrorContexts.Commit) 只需将属性值设置为false(或true

在我的
DataGridView
中有一个列,它将
DataGridViewCheckBoxColumn
作为列模板。当用户选中复选框时,如果它在某些条件下失败,我需要通过编程取消选中它。我已经这样做了,但是这个取消选中的逻辑只有在我手动改变单元格的焦点后才会生效。我试图通过编程改变焦点,但没有成功。有什么解决方法吗?

只需将属性值设置为
false
(或
true
):

CommitEdit(DataGridViewDataErrorContexts.Commit) 
只需将属性值设置为
false
(或
true
):

CommitEdit(DataGridViewDataErrorContexts.Commit) 

我找到了答案,代码做了一些小改动。我使用了datagridview的取消编辑功能。对于要触发的复选框值更改,我在内部使用了此代码 CurrentCellDirtyStateChanged事件

CommitEdit(DataGridViewDataErrorContexts.Commit) 
现在我把它改成了

CommitEdit(DataGridViewDataErrorContexts.Commit) 
CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange) 
打电话给

CommitEdit(DataGridViewDataErrorContexts.Commit) 
CancelEdit()

要回滚更改。

我发现答案只需对代码进行少量更改。我使用了datagridview的取消编辑功能。对于要触发的复选框值更改,我在内部使用了此代码
CommitEdit(DataGridViewDataErrorContexts.Commit) 
CurrentCellDirtyStateChanged事件

CommitEdit(DataGridViewDataErrorContexts.Commit) 
现在我把它改成了

CommitEdit(DataGridViewDataErrorContexts.Commit) 
CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange) 
打电话给

CommitEdit(DataGridViewDataErrorContexts.Commit) 
CancelEdit()

要回滚更改。

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

CommitEdit(DataGridViewDataErrorContexts.Commit) 
最后,我通过简单的DataGridView方法实现了我想要的(如果某些条件失败,则取消选中):

CommitEdit(DataGridViewDataErrorContexts.Commit) 
dataGridView1.CancelEdit()

希望能有帮助。

最近我也遇到了类似的问题。在我的案例中,将单元格值设置为false或使用TrueValue和FalsValue(对于DataGridViewCheckBoxCell)失败

CommitEdit(DataGridViewDataErrorContexts.Commit) 
最后,我通过简单的DataGridView方法实现了我想要的(如果某些条件失败,则取消选中):

CommitEdit(DataGridViewDataErrorContexts.Commit) 
dataGridView1.CancelEdit()

希望有帮助。

需要更多信息。你想用JS做这个吗?你会使用Ajax吗?不能使用Ajax..这是一个windows应用程序..啊,很抱歉错过了winforms标记。看看这个问题@McArthey no sorry needed dude..我在你问我之后添加了标记。需要更多信息。你想用JS做这个吗?你会使用Ajax吗?不能使用Ajax..这是一个windows应用程序..啊,很抱歉错过了winforms标记。看看这个问题@McArthey no sorry needed dude..在你问我之后我添加了标记。没有ria我试过了,但只有当我从cellno ria更改焦点时它才会生效我试过,但只有当我更改了我可以知道你在哪里调用CancelEdit方法吗?因为我的情况下它失败了。我可以知道你在哪里调用CancelEdit方法吗?因为我的情况下它失败了。
CommitEdit(DataGridViewDataErrorContexts.Commit)