首页 新闻 会员 周边 捐助

winform 列计算问题

0
悬赏园豆:50 [已解决问题] 解决于 2019-10-10 17:51

举例:有3列,分别是
数量 单价 金额
计算公式是:
数量*单价=金额。
特殊需求是,可以输入金额,反算单价。
遇到的问题是,如果数量或单价变化触发计算金额,而金额变化触发反算单价,于是导致死循环了。

用的控件是dev的gridcontrol。

问题补充:

在官方论坛找到相似的问题了。附上链接供后来者参考。
https://www.devexpress.com/Support/Center/Question/Details/Q200064/cellvaluechanged-event-infinity-loop

清海扬波的主页 清海扬波 | 小虾三级 | 园豆:825
提问于:2019-10-09 09:03
< >
分享
最佳答案
0

尝试下:校验计算结果和文本值是否一致,一致就停止计算。

收获园豆:30
南语喃 | 菜鸟二级 |园豆:306 | 2019-10-09 14:00

恩,这是一种方法,要是能够有更“优美”的方法就更好。

清海扬波 | 园豆:825 (小虾三级) | 2019-10-09 14:14

或者在set{}里,设定value与目标值不一样,才进行赋值。

南语喃 | 园豆:306 (菜鸟二级) | 2019-10-09 18:29
其他回答(4)
0
单价.Changed += 单价Changed;
金额.Changed += 金额Changed;

void 单价Changed(){
      金额.Changed -= 金额Changed;
      金额 = 单价*数量;.
      金额.Changed += 金额Changed
}

void 金额Changed(){
      单价.Changed -= 单价Changed;
      单价 = 金额/数量;
      单价.Changed += 单价Changed;
}
会长 | 园豆:12463 (专家六级) | 2019-10-09 09:19

原理是这样的,但是没法用到实际上面,事件是绑定到表格的,不可能取消表格的事件委托。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2019-10-09 12:37
0

在离开事件里做计算就行了,给控件赋值的时候不会触发离开事件的

jqw2009 | 园豆:2341 (老鸟四级) | 2019-10-09 14:19

编辑器确实有离开事件,但是如果用离开事件,即使不修改也会触发重算,不太友好。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2019-10-09 14:44
0

加个状态量进行阻断不就行了。

收获园豆:20
花飘水流兮 | 园豆:13615 (专家六级) | 2019-10-09 15:29
0

按理来说 单价不是应该是个固定量吗

SoarNo1 | 园豆:195 (初学一级) | 2019-10-11 09:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册