Поймать исключение / ошибку из OCX, размещенного в .NET Windows Form - PullRequest
1 голос
/ 25 января 2011

У меня есть форма Windows .NET, которую я использую для размещения старой формы VB6 OCX. Это то, от чего я не могу убежать! По крайней мере, пока ...

Я не уверен, что этот параграф будет полезен, но на всякий случай я поделюсь этой информацией. Для загрузки этого элемента управления мое приложение .NET предоставляет файл конфигурации, который будет содержать информацию об элементе управления OCX. Затем я загружу элемент управления с помощью отражения, создам экземпляр с помощью Activator.CreateInstance и приведу этот объект к System.Windows.Forms.Control. Затем я добавляю его в свою коллекцию Controls формы .NET. Этот подход работает для меня.

Итак, я хочу поймать исключения и ошибки OCX в моей форме .NET или иметь возможность узнать, что эта форма OCX потерпела крах. Это возможно? У кого-нибудь был подобный опыт? Кстати, я использую .NET 2.0.

Спасибо.

1 Ответ

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

Так как никто более осведомленный еще не ответил ...

  • Если вы вызываете напрямую из своего кода .Net в метод / свойство в VB6, ошибки, возникающие в VB6, должны распространятьсяобратно в .Net как исключения.
  • Код VB6 предположительно будет включать в себя обработчики событий для вашей формы и элементы управления.Вам нужны обработчики ошибок в этих подпрограммах, использующие On Error Gotoдумаю необработанные ошибки приведут к падению приложения (в стеке вызовов под событиями Windows нет кода .Net).Если вы хотите сообщить об ошибках обратно в .Net, вам нужно будет изобрести механизм для этого.Вызовите пользовательское событие из компонента VB6 или предоставьте обратный вызов из VB6 в .Net.
...