ActiveX Control Dispose (true) не вызывается - PullRequest
3 голосов
/ 20 января 2011

Мой элемент управления ActiveX C # размещен в IE 8. Я хочу выполнить код, когда элемент управления выгружен.

Я попробовал следующее:

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

Но удаление всегда ложно (Вызывается из финализатора). Поскольку мне нужно получить доступ к управляемым объектам, я не могу использовать этот.

Как я могу получить код очистки, который вызывается, когда браузер "выгружает" элемент управления?

Я нашел метод IOleObject :: Close, который реализуется классом Control, но AFAIK нет способа переопределить его поведение.

Ответы [ 2 ]

1 голос
/ 20 января 2011

Вы можете переопределить OnHandleDestroyed (), вызываемый, когда IE разрушает окно управления.

1 голос
/ 20 января 2011

Я не сделал этого, но в качестве предложения попробовать: возможно, можно написать немного javascript, встроенного в html на веб-странице, который будет вызывать метод в вашем элементе управления ActiveX при переходе по странице от Вы можете вызвать свой код очистки из этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...