How to: Support COM Interop by Displaying a Windows Form with the ShowDialog Method

可通过在 .NET Framework 消息循环上显示 Windows 窗体来解决组件对象模型 (COM) 互操作性问题,可使用 Application.Run 方法来创建该消息循环。

若要使窗体在 COM 客户端应用程序中正确工作,必须在 Windows 窗体消息循环上运行该窗体。 若要执行此操作,请使用以下方法之一:

过程

使用 Form.ShowDialog 方法可能是在 .NET Framework 消息循环上显示窗体的最简单方法,因为在所有方法中,它只需最少的代码即可实现。

Form.ShowDialog 方法挂起非托管应用程序的消息循环,并将窗体显示为对话框。 由于宿主应用程序的消息循环已挂起,Form.ShowDialog 方法创建新的 .NET Framework 消息循环来处理该窗体的消息。

使用 Form.ShowDialog 方法的缺点是窗体将作为模式对话框打开。 Windows 窗体打开时,此行为将阻止调用应用程序中的任何用户界面 (UI)。 当用户退出该窗体时,.NET Framework 消息循环关闭,先前应用程序的消息循环重新运行。

可以在 Windows 窗体中创建具有显示窗体方法的类库,然后为 COM 互操作生成类库。 可以从 Visual Basic 6.0 或 Microsoft 基础类 (MFC) 中使用此 DLL 文件,在这两种环境中,都可以调用 Form.ShowDialog 方法来显示窗体。

通过使用 ShowDialog 方法显示 Windows 窗体来支持 COM 互操作

另请参阅