Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何立即更新DataGridViewCheckBoxCell的值?_C#_.net_Winforms_Datagridview_Datagridviewcheckboxcell - Fatal编程技术网

C# 如何立即更新DataGridViewCheckBoxCell的值?

C# 如何立即更新DataGridViewCheckBoxCell的值?,c#,.net,winforms,datagridview,datagridviewcheckboxcell,C#,.net,Winforms,Datagridview,Datagridviewcheckboxcell,我在DataGridView控件中使用DataGridViewCheckBoxCell。当用户单击复选框时,我验证某些条件并将其值设置为false。但是,该复选框将保持选中状态,直到用户移动到下一行。如何解决此问题,以便立即更新值首先提交更改,然后将控件更改到另一个单元格并返回。是的。。。在这一点上,您可能并不关心,但我最近遇到了我认为是同一个问题:如果您单击选中的复选框是它被选中或未选中的直接原因,那么实际上,您需要做的就是处理DataGridView的CellDirtyStateChange

我在DataGridView控件中使用DataGridViewCheckBoxCell。当用户单击复选框时,我验证某些条件并将其值设置为false。但是,该复选框将保持选中状态,直到用户移动到下一行。如何解决此问题,以便立即更新值首先提交更改,然后将控件更改到另一个单元格并返回。

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

可悲的是,我找不到解决办法,所以我作弊了:在负责以编程方式切换单元格复选框的代码之后,如果网格的IsCurrentCelllineDitMode为true,并且它的CurrentCell列是复选框列,那么我只是将CurrentCell移过一列,然后再移回来。这不是最漂亮的解决方案,但我已经厌倦了用那个控件进行斗争,它没有任何明显的闪烁或任何东西,所以。。。很好


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

@geek:WinForms CheckBox没有自动回发属性抱歉,我以为它是asp.net gridview: