2011-01-20 49 views
3

我的C#ActiveX控件是IE 8中的hostet。我想在控件卸載時執行代碼。ActiveX Control Dispose(true)不被調用

我試過如下:

... 
public class ActiveXControl : Control 
{ 
    protected override void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      // Cleanup 
     } 
    } 
} 
... 

但產權處置是虛假的百達(來自終結調用)。由於我需要訪問管理對象,我不能使用那個。

當瀏覽器「卸載」控件時,如何獲取清理代碼?

我發現的IOleObject :: Close方法,這是由控制類實現的,但據我所知療法沒有覆蓋其行爲方式。

+0

一般來說,這不是一個好主意,寫.NET IE瀏覽器擴展(BHO對象,工具欄,或ActiveX控件)。 – EricLaw 2011-01-20 15:40:05

+0

@Eric:它只用在一個衆所周知的環境中。在我的特殊情況下,我想不出任何缺點。也許有關於它的文章? – 2011-01-21 13:20:48

+0

我發現VisibleChanged事件會在您離開頁面時觸發。 您是否找到其他解決方案? – mbeckish 2011-07-13 19:51:50

回答

1

我還沒有這樣做,但作爲一個建議嘗試:它可能會寫入一些JavaScript的嵌入在網頁的HTML,將調用您的ActiveX控件的方法,當頁面是遠離。你可以從這個方法調用你的清理代碼。

1

您可以覆蓋OnHandleDestroyed()被調用時IE破壞控制窗口。