Partilhar via


Como: Suportar interoperabilidade COM exibindo um formulário do Windows com o método ShowDialog

Você pode resolver problemas de interoperabilidade do COM (Component Object Model) exibindo seu Windows Form em um loop de mensagem do .NET Framework, que é criado usando o método Application.Run.

Para fazer um formulário funcionar corretamente a partir de um aplicativo cliente COM, você deve executá-lo em um loop de mensagem do Windows Forms. Para fazer isso, use uma das seguintes abordagens:

Tramitação processual

Usar o método Form.ShowDialog pode ser a maneira mais fácil de exibir um formulário em um loop de mensagem do .NET Framework porque, de todas as abordagens, ele requer o mínimo de código para implementar.

O método Form.ShowDialog suspende o loop de mensagem do aplicativo não gerenciado e exibe o formulário como uma caixa de diálogo. Como o loop de mensagem do aplicativo host foi suspenso, o método Form.ShowDialog cria um novo loop de mensagem do .NET Framework para processar as mensagens do formulário.

A desvantagem de usar o método Form.ShowDialog é que o formulário será aberto como uma caixa de diálogo modal. Esse comportamento bloqueia qualquer interface do usuário (UI) no aplicativo de chamada enquanto o Windows Form está aberto. Quando o usuário sai do formulário, o loop de mensagem do .NET Framework é fechado e o loop de mensagem do aplicativo anterior começa a ser executado novamente.

Você pode criar uma biblioteca de classes no Windows Forms que tem um método para mostrar o formulário e, em seguida, criar a biblioteca de classes para interoperabilidade COM. Você pode usar esse arquivo DLL do Visual Basic 6.0 ou Microsoft Foundation Classes (MFC), e de qualquer um desses ambientes você pode chamar o método Form.ShowDialog para exibir o formulário.

Para dar suporte à interoperabilidade COM exibindo um formulário do Windows com o método ShowDialog

  • Substitua todas as chamadas para o método Form.Show por chamadas para o método Form.ShowDialog no componente .NET Framework.

Ver também