找回密码
 立即注册

QQ登录

只需一步,快速开始

gaobowen

中级会员

87

主题

227

帖子

810

积分

中级会员

积分
810

微信认证勋章

gaobowen
中级会员   /  发表于:2017-7-10 11:12  /   查看:10715  /  回复:12
在程序中,有cellchange事件,如下:
Private Sub FpSpread1_Sheet1_CellChanged(sender As Object, e As FarPoint.Win.Spread.SheetViewEventArgs) Handles FpSpread1_Sheet1.CellChanged
End Sub
进行了如下图的操作3后,该cellchange事件被触发了。但是因为实际情况是spread里的值并未发生改变,所以我不想让cellchange事件被触发,请问,有什么办法吗?谢谢了!
操作说明:操作1,点击checkbox。操作2,再次点击该checkbox。操作3,点击其他单元格。

cellchange.png

12 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-10 14:15:30
沙发
因为您点击了checkbox做了变化,肯定是要触发事件的。
如果您要离开单元格时最终有没有变化,可以在EnterCell事件记录下当前值,LeaveCell事件中判断新值和老值是否一致。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2017-7-10 15:04:19
板凳
dexteryao 发表于 2017-7-10 14:15
因为您点击了checkbox做了变化,肯定是要触发事件的。
如果您要离开单元格时最终有没有变化,可以在EnterC ...

但是有一点比较奇怪,就是我第一次按照上面的操作做了一遍之后是触发cellchange事件的。而第二次再做同样的操作,却不触发了。这一点比较疑惑。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-10 18:15:28
地板
gaobowen 发表于 2017-7-10 15:04
但是有一点比较奇怪,就是我第一次按照上面的操作做了一遍之后是触发cellchange事件的。而第二次再做同样 ...

因为点击后进入了单元格的编辑事件了,在出编辑事件之前所做的操作都是不会触发cellchange事件的。所以做法就是像我同事刚刚说的那样在entercell记录当前值,在leavecell中判断新老值是否一致。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2017-7-11 09:01:14
5#
ClarkPan 发表于 2017-7-10 18:15
因为点击后进入了单元格的编辑事件了,在出编辑事件之前所做的操作都是不会触发cellchange事件的。所以做 ...

你好,感谢您的回答。但是问题在于,上述操作1和2的时候,没有触发cellchange事件,操作3的时候,首先触发的是cellchange,然后是leavecell,最后是entercell。我的本意是不想让程序走cellchange里的某些代码。这样的话,在entercell和entercell做判断也就没有用了啊。它第一遍总是会先走cellchange的。
麻烦了。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2017-7-11 09:01:30
6#
ClarkPan 发表于 2017-7-10 18:15
因为点击后进入了单元格的编辑事件了,在出编辑事件之前所做的操作都是不会触发cellchange事件的。所以做 ...

你好,感谢您的回答。但是问题在于,上述操作1和2的时候,没有触发cellchange事件,操作3的时候,首先触发的是cellchange,然后是leavecell,最后是entercell。我的本意是不想让程序走cellchange里的某些代码。这样的话,在entercell和entercell做判断也就没有用了啊。它第一遍总是会先走cellchange的。
麻烦了。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-11 11:48:58
7#
在文档种有关 CellChange 的描述是  “Occurs when a change is made to a cell or range of cells on this sheet that may require the cell or range of cells be repainted.”
也就是说只要可能引起单元格重绘的操作都会触发事件。
所以这里重点看下您的需求,您的目的是什么。
比如您只想知道数据是否变化可以使用ValueChange。 这样只有单元格勾选,或者取消勾选才会触发
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2017-7-11 12:01:39
8#
dexteryao 发表于 2017-7-11 11:48
在文档种有关 CellChange 的描述是  “Occurs when a change is made to a cell or range of cells on this ...

我的需求是:不管点击几次checkbox,在离开这个checkbox单元格的时候,只要最终的选中状态和初期的一致,就不触发cellchange事件。
另外,我用的是spread7,没有找到您说的ValueChange。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-11 17:44:59
9#
本帖最后由 dexteryao 于 2017-7-11 17:46 编辑

cellchange的触发是没有办法控制的,由内部机制控制,现在您需要在cellchange里坐什么事情? 然后用其他事件代替这个cellchange。或者在cellchange中判断一些状态,决定是否要做需要的事情。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2017-7-11 18:50:22
10#
我觉得您可能没有完全明白我的需求。但是根据您的回答,我觉得只能在cellchange事件里做判断了。还请麻烦您再看看楼上我写的需求,如何做checkbox状态一致的判断?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部