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

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

若要使窗体在 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 互操作

请参见

任务

如何:通过在每个 Windows 窗体各自的线程上显示该 Windows 窗体来支持 COM 互操作

概念

向 COM 公开 .NET Framework 组件

其他资源

Windows 窗体和非托管应用程序