找回密码
 立即注册

QQ登录

只需一步,快速开始

yinzhm

初级会员

32

主题

129

帖子

339

积分

初级会员

积分
339

活字格认证微信认证勋章

yinzhm
初级会员   /  发表于:2014-7-11 20:22  /   查看:11163  /  回复:6
斑竹,请教一下,如下理解是否正确?
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的值,失败啊,只读……   没接口…………

6 个回复

倒序浏览
dafo
版主   /  发表于:2014-7-14 13:59:00
沙发
你的理解是对的。
对于你的需求,你可以在CellValidating事件中通过修改gcMultiRow.EditiongControl的值来改变5为3.
  1.         void gcMultiRow1_CellValidating(object sender, GrapeCity.Win.MultiRow.CellValidatingEventArgs e)
  2.         {
  3.             if (this.gcMultiRow1.EditingControl != null)
  4.             {
  5.                 (this.gcMultiRow1.EditingControl as TextBox).Text = "3";
  6.             }
  7.         }
复制代码
回复 使用道具 举报
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
5#
回复 4楼dafo的帖子

好的,我尝试一下,再答复,谢谢斑竹!
回复 使用道具 举报
yinzhm
初级会员   /  发表于:2014-7-15 12:54:00
6#
回复 4楼dafo的帖子

经过验证好用。
类似如下:
TryCast(Me.dpvLine.EditingControl, InputMan.GcTextBoxEditingControl).FormattedValue = strBuf
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-15 18:28:00
7#
回复 6楼yinzhm的帖子

好的。能够解决问题就好。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部