2012-02-13 65 views
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屬性,但那總是空的。

+0

請提供一些背景。向我們展示一些示例代碼 – 2012-02-13 20:18:23

回答

2

它看起來像Changed事件贊成ColorInfo.ColorChanged,ImageInfo.ImageChanged等事實上被淘汰,改變的事件不再被解僱作爲2011年的色彩變化。事實證明,導致該事件發生的其他潛在原因。

不管怎樣,長話短說,不要使用Changed事件。

0

我無法確認此行爲,我只收到一個事件 - 請問您可以告訴我們您正在使用哪個版本?而且 - 你是否通過代碼或設置頁面更改顏色?

在我的情況下,我在這兩種情況下都得到了一次回調。

感謝

+0

我正在使用2011.2,並且通過設置頁面更改顏色。 – 2012-02-14 16:07:50

0

我得到一個事件也。我使用2011.1和ColorInfo的Borehole ColorChanged事件。

在其他情況下,我確實看到多個事件,但是當數據更改觸發器更改爲其他鑽孔相關數據時會發生這些事件。例如,更改KB會導致大量底層計算並導致多個事件觸發器。

+0

我沒有訂閱ColorChanged事件。也許這種行爲是不同的?我希望能夠訂閱域對象更改事件,並只解析出我感興趣的更新。無論如何,它看起來似乎是同一事件的多次發射。 – 2012-02-14 14:33:38