1

我有一个自定义窗口来显示输入树中的各种对象。一旦在输入树上检查了一个对象并显示在窗口中,我就订阅了该对象的“已更改”事件。我绝对确定我没有多次订阅该活动。我看到的问题是当我对对象进行更改(例如颜色)时,事件会触发 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属性,但总是空的。

4

3 回答 3

2

看起来 Changed 事件正在被逐步淘汰,取而代之的是 ColorInfo.ColorChanged、ImageInfo.ImageChanged 等。事实上,从 2011 年开始,不再触发 Changed 事件以进行颜色更改。事实证明,还有其他潜在因素导致事件触发。

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

于 2012-02-16T16:48:56.963 回答
0

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

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

谢谢

于 2012-02-14T08:29:05.330 回答
0

我也得到一个事件。我正在为 Borehole 使用 2011.1 和 ColorInfo 中的 ColorChanged 事件。

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

于 2012-02-14T13:45:13.310 回答