Procedimiento para admitir la interoperabilidad COM mostrando un formulario Windows Forms con el método ShowDialog

Puede resolver problemas de interoperabilidad del Modelo de objetos componentes (COM) mostrando el formulario de Windows Forms en un bucle de mensajes de .NET Framework, que se crea con el método Application.Run.

Para que un formulario funcione correctamente con una aplicación cliente COM, debe ejecutarlo en un bucle de mensajes de Windows Forms. Para ello, siga uno de estos procedimientos:

Procedimiento

El uso del método Form.ShowDialog puede ser la manera más fácil de mostrar un formulario en un bucle de mensajes de .NET Framework porque, de todos los enfoques, es el que necesita menos código para su implementación.

El método Form.ShowDialog suspende el bucle de mensajes de la aplicación no administrada y muestra el formulario en forma de cuadro de diálogo. Una vez suspendido el bucle de mensajes de la aplicación host, el método Form.ShowDialog crea otro bucle de mensajes de .NET Framework para procesar los mensajes del formulario.

La desventaja a la hora de usar el método Form.ShowDialog es que el formulario se abrirá como un cuadro de diálogo modal. Este comportamiento bloquea cualquier interfaz de usuario (IU) de la aplicación que hace la llamada mientras el formulario de Windows Forms esté abierto. Cuando el usuario sale del formulario, el bucle de mensajes de .NET Framework se cierra y el bucle de mensajes de la primera aplicación vuelve a ejecutarse.

Puede crear una biblioteca de clases en Windows Forms que tenga un método para mostrar el formulario y, después, compilar la biblioteca de clases para la interoperabilidad COM. Puede usar este archivo DLL desde Visual Basic 6.0 o desde Microsoft Foundation Classes (MFC); además, desde cualquiera de estos entornos puede llamar al método Form.ShowDialog para mostrar el formulario.

Para admitir la interoperabilidad COM mostrando un formulario de Windows Forms con el método ShowDialog

  • Reemplace todas las llamadas al método Form.Show por llamadas al método Form.ShowDialog en su componente de .NET Framework.

Vea también