C# DevXPress GridControl检查值在双击后更改

C# DevXPress GridControl检查值在双击后更改,c#,events,checkbox,devexpress,gridcontrol,C#,Events,Checkbox,Devexpress,Gridcontrol,我使用的是DevExpress GridControl,其中我绑定了数据,一列包含按顺序排列的布尔标志。我在SimpleGridView上注册了一个名为CellValueChanged的事件,因为当我的检查字段(即按顺序排列的值)更改时,我希望执行一些操作。 在subscriber方法中,我检查if(e.Column.FieldName==“IsOrdered”),然后执行这些操作 问题是,CellValueChanged事件只有在我选中复选框(双击)并单击其他地方后才会引发。不幸的是,这导致了

我使用的是DevExpress GridControl,其中我绑定了数据,一列包含按顺序排列的布尔标志。我在SimpleGridView上注册了一个名为CellValueChanged的事件,因为当我的检查字段(即按顺序排列的值)更改时,我希望执行一些操作。 在subscriber方法中,我检查
if(e.Column.FieldName==“IsOrdered”)
,然后执行这些操作

问题是,CellValueChanged事件只有在我选中复选框(双击)并单击其他地方后才会引发。不幸的是,这导致了一个恼人的问题:例如,当我在该网格中的行已按顺序设置为false(未选中)时,我选中此复选框并立即取消选中它,然后单击其他位置,也会引发事件。我认为在这种情况下不应该引发该事件,因为该有序值实际上并没有改变(它是false,然后是true,最后又是false)

也许有什么方法可以改变这种默认行为?完美的做法是在选中/取消选中复选框后立即引发CellValueChanged事件,而不必单击复选框的其他位置来引发事件

还有一个名为CellValueChanging的事件,但它不能解决我的问题,因为该事件实际上是在更改有序的值之前引发的,但在我的订户方法中,我需要知道该字段的值是否更改为true或false


我将非常感谢您的帮助:)。

您应该在网格中使用CheckEdit存储库项,以使其正常工作

如中所述:DevExpress编辑器库的编辑器可用于在DevExpress提供的容器控件中执行就地编辑。本主题描述用于将就地编辑器分配给容器控件的机制


您还可以查看以下状态:“您应该从存储库项的EditValueChanged事件处理程序调用GridView.PostEditor方法,以立即将编辑后的值保存到网格的单元格和基础列。”

您可以使用
GridView.CellValueChangeing
事件,在此事件中,您可以使用方法更改字段的值。
下面是一个例子:

private void gridView1_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
    if (e.Column.FieldName == "IsOrdered")
    {
        gridView1.SetRowCellValue(e.RowHandle, e.Column, e.Value);

        //Do your other staff here.               
    }
}

谢谢,这实际上很好,因为我得到了复选框被更改的实际值,但另一个问题是,在这种情况下,我无法从GridView中获取所选行,因此我无法对我的对象执行任何操作,这实际上是更改复选框值的行。您是否考虑使用GETFIXUDROW获取所选行?