1

我有一个 .NET Windows 窗体,用于托管较旧的 VB6 OCX 窗体。那是我逃不掉的!至少现在...

我不确定这一段是否有用,但以防万一我会分享这些信息。为了加载此控件,我的 .NET 应用程序提供了一个配置文件,其中包含有关 OCX 控件的信息。然后,我将使用反射加载控件,使用 Activator.CreateInstance 创建一个实例并将此对象转换为 System.Windows.Forms.Control。然后,我将它添加到我的 .NET 表单的 Controls 集合中。这种方法对我有用。

所以,我想要的是在我的 .NET 表单中捕获 OCX 异常和错误,或者以任何方式知道这个 OCX 表单崩溃了。这可能吗?有没有人有类似的经历?顺便说一句,我使用的是 .NET 2.0。

谢谢。

4

1 回答 1

1

由于还没有知识渊博的人回答...

  • 如果您从 .Net 代码直接调用 VB6 中的方法/属性,则 VB6 中引发的错误应作为异常传播回 .Net。
  • VB6 代码可能包含窗体和控件的事件处理程序。您需要在这些例程中使用错误处理程序,使用On Error Goto. 我认为未处理的错误会使应用程序崩溃(Windows 事件下方的调用堆栈中没有 .Net 代码)。如果您想将错误传达回 .Net,则需要发明一种机制来执行此操作。从 VB6 组件引发自定义事件,或提供从 VB6 到 .Net 的回调。
于 2011-01-25T16:13:09.887 回答