0

自从我使用这个“API”已经很多年了(是的,用引号引起来,因为它可能是我遇到过的最令人困惑的 API!)

我的需求很简单。 我想订阅一个事件,告诉我单元格的内容已更改以及新内容是什么。

当单元格发生更改时,会触发一千零一个事件,但是当您查询单元格.Text关联的属性时GridStyleInfo,它总是告诉您它是什么不是它是什么

CurrentCellChanging这对于像or之类的事件来说已经足够公平了CurrentCellValidating。我读过你可以Renderer在这些事件期间询问当前单元格的“”值。

对我来说似乎不正确的是当我订阅时CurrentCellValidated- 单元格文本仍然是旧值。所以,CurrentCellValidated (我假设)意味着单元格的内容已经改变,验证已经开始,验证已经结束,验证已经成功,但是......什么被验证了,它在哪里?

我知道我在 StackOverflow 上的下一个问题是什么——我会给你一个提示:它包含“SyncFusion”、“Grid”、“Alternative”等词!

干杯,

史蒂夫

4

2 回答 2

2

CurrentCellValidated 事件在更改的值移动到基础样式对象之前引发。如果您想在更改的值被移动到基础样式对象后捕获更改,请尝试使用 CurrentCellAcceptedChanged 事件。

这是一个显示如何使用这两个事件的示例。

        私人无效Form1_Load(对象发送者,EventArgs e)
        {
            this.gridControl1.CurrentCellValidated += new EventHandler(gridControl1_CurrentCellValidated);
            this.gridControl1.CurrentCellAcceptedChanges += new CancelEventHandler(gridControl1_CurrentCellAcceptedChanges);
        }

        void gridControl1_CurrentCellAcceptedChanges(对象发送者,CancelEventArgs e)
        {
            GridCurrentCell cc = gridControl1.CurrentCell;
            Console.WriteLine("gridControl1_CurrentCellAcceptedChanges 单元格 ({0},{1}) 更改为:{2}", cc.RowIndex, cc.ColIndex, gridControl1[cc.RowIndex, cc.ColIndex].CellValue);
        }

        void gridControl1_CurrentCellValidated(对象发送者,EventArgs e)
        {
            GridCurrentCell cc = gridControl1.CurrentCell;
            Console.WriteLine("gridControl1_CurrentCellValidated 单元格 ({0},{1}) 更改为:{2}", cc.RowIndex, cc.ColIndex, cc.Renderer.ControlText);
        }
于 2010-02-16T23:11:03.687 回答
2

正如 Clay 所说,CurrentCellAcceptedChanges 事件将是在将值存储到 GridStyleInfo 后获取值的正确位置。

添加更多信息 - Grid 在进行任何验证之前引发 CurrentCellValidating。如果您查看 GridStyleInfo,就会发现 CellValueType(int、decimal、datetime 等)、Format 和 CultureInfo 等属性。当您设置这些属性时,Grid 将基于这些解析单元格值。在绑定控件的情况下 - GridDataBoundGrid 或 GridGroupingControl,它将从数据源的架构(如果可用)中读取它。

因此,CurrentCellValidating 在任何验证之前被触发,CurrentCellValidation 在 Grid 解析之后和保存到 GridStyleInfo.CellValue 之前被触发。

于 2010-02-16T23:22:40.573 回答