我有一个自定义窗口来显示输入树中的各种对象。一旦在输入树上检查了一个对象并在窗口中显示,我就订阅了该对象的“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
属性,但这总是空的。
答案 0 :(得分:2)
看起来Changed事件正在逐步取消,有利于ColorInfo.ColorChanged,ImageInfo.ImageChanged等。事实上,自2011年起,Changed事件不再被触发用于颜色更改。事实证明,还有其他因素导致事件发生。
无论如何,长话短说,不要使用Changed事件。
答案 1 :(得分:0)
我无法确认此行为,我只收到一个事件 - 您能否告诉我们您使用的是哪个版本?并且 - 您是通过代码还是通过设置页面更改颜色?
在我的情况下,我在两种情况下都收到了一个回调。
由于
答案 2 :(得分:0)
我也有一个活动。我正在使用2011.1和ColorInfo中的ColorChanged事件进行钻孔。
在其他情况下,我确实看到了多个事件,但是当数据发生变化时,这些事件会发生变化,导致其他Borehole相关数据发生变化。例如,更改KB将导致大量基础计算并导致多个事件触发器。