yinzhm 发表于 2014-7-11 20:22:00

EditedFormattedValue和Value

斑竹,请教一下,如下理解是否正确?
EditedFormattedValue:在编辑过程中设置和显示的值,还没有提交给Value,如在一个cell中录入数据的时候,每键入一个字符都会触发CellEditedFormattedValueChanged事件,但不会触发CellValueChanged事件,之后Commit之后才会触发CellValueChanged。
Value:编辑提交之后,根据EditedFormattedValue的值设置Value的值。
以上两个值在某些时候可以不相等。

需求:在一个Cell中输入5,然后按下Tab键(MoveToNextCell),在CellValidating事件中,我希望某些条件下,变更刚才输入的值,比如将5变为3,
(1)这时我改变Cell的Value=3,当进入EndEdit事件是Value又恢复成5了,它用EditedFormattedValue把Value设置回去了。
或者
(2)我尝试改变EditedFormattedValue的值,失败啊,只读……   没接口…………

dafo 发表于 2014-7-14 13:59:00

你的理解是对的。
对于你的需求,你可以在CellValidating事件中通过修改gcMultiRow.EditiongControl的值来改变5为3.

      void gcMultiRow1_CellValidating(object sender, GrapeCity.Win.MultiRow.CellValidatingEventArgs e)
      {
            if (this.gcMultiRow1.EditingControl != null)
            {
                (this.gcMultiRow1.EditingControl as TextBox).Text = "3";
            }
      }

yinzhm 发表于 2014-7-14 14:47:00

回复 2楼dafo的帖子

我使用的GcNumberCell类型的Cell,设置了输入和显示的格式,如果直接改变Text,需要Format

所以我将代码移植了,在CellValidating中先将要设置的数字保存,然后在CellEedEdit中设置Cell的Value,这是设置Value是可以起作用的。

dafo 发表于 2014-7-14 15:37:00

GcNumberCell的EditingContol是GcNumber控件,可以直接改Value的,不会影响Format的。

yinzhm 发表于 2014-7-14 17:37:00

回复 4楼dafo的帖子

好的,我尝试一下,再答复,谢谢斑竹!

yinzhm 发表于 2014-7-15 12:54:00

回复 4楼dafo的帖子

经过验证好用。
类似如下:
TryCast(Me.dpvLine.EditingControl, InputMan.GcTextBoxEditingControl).FormattedValue = strBuf

Alice 发表于 2014-7-15 18:28:00

回复 6楼yinzhm的帖子

好的。能够解决问题就好。:mj72:
页: [1]
查看完整版本: EditedFormattedValue和Value