域对象“已更改”事件多次触发?

时间:2012-02-13 20:11:14

标签: ocean petrel

我有一个自定义窗口来显示输入树中的各种对象。一旦在输入树上检查了一个对象并在窗口中显示,我就订阅了该对象的“Changed”事件。我绝对相信我不会多次订阅这个活动。我看到的问题是当我对对象进行更改(例如颜色)时,事件会触发3次。

伪代码:

- Draw a borehole in a custom window<br />
- borehole.Changed += borehole_Changed<br />
- Change the color of the borehole<br />
- See event fire 3 times (I just added debug prints)

编辑:
我注意到只需打开设置并单击“确定”而不更改任何内容会导致触发3个事件。所以现在我认为它实际上与更改颜色无关。

我也尝试检查DomainObjectChangeEventArgs PropertyNames属性,但这总是空的。

3 个答案:

答案 0 :(得分:2)

看起来Changed事件正在逐步取消,有利于ColorInfo.ColorChanged,ImageInfo.ImageChanged等。事实上,自2011年起,Changed事件不再被触发用于颜色更改。事实证明,还有其他因素导致事件发生。

无论如何,长话短说,不要使用Changed事件。

答案 1 :(得分:0)

我无法确认此行为,我只收到一个事件 - 您能否告诉我们您使用的是哪个版本?并且 - 您是通过代码还是通过设置页面更改颜色?

在我的情况下,我在两种情况下都收到了一个回调。

由于

答案 2 :(得分:0)

我也有一个活动。我正在使用2011.1和ColorInfo中的ColorChanged事件进行钻孔。

在其他情况下,我确实看到了多个事件,但是当数据发生变化时,这些事件会发生变化,导致其他Borehole相关数据发生变化。例如,更改KB将导致大量基础计算并导致多个事件触发器。