Partager via


Comment : prendre en charge COM Interop en affichant un Windows Form avec la méthode ShowDialog

Mise à jour : novembre 2007

Vous pouvez résoudre les problèmes d'interopérabilité COM (Component Object Model) en affichant votre Windows Form sur une boucle de message .NET Framework, qui est créée en utilisant la méthode Application.Run.

Pour qu'un formulaire fonctionne correctement à partir d'une application cliente COM, vous devez l'exécuter sur une boucle de message Windows Forms. Pour cela, utilisez l'une des approches suivantes :

Procédure

En utilisant la méthode Form.ShowDialog, vous pouvez plus facilement afficher un formulaire sur une boucle de message .NET Framework parce que, parmi toutes les approches, c'est celle qui exige le moins de code à implémenter.

La méthode Form.ShowDialog interrompt la boucle de message de l'application non managée et affiche le formulaire en tant que boîte de dialogue. Dans la mesure où la boucle de message de l'application hôte a été interrompue, la méthode Form.ShowDialog crée une nouvelle boucle de message .NET Framework pour traiter les messages du formulaire.

L'utilisation de la méthode Form.ShowDialog a pour inconvénient l'ouverture du formulaire en tant que boîte de dialogue modale. Ce comportement bloque toute interface utilisateur dans l'application appelante pendant que le Windows Form est ouvert. Lorsque l'utilisateur quitte le formulaire, la boucle de message .NET Framework se ferme et la boucle de message de l'application précédente recommence à s'exécuter.

Vous pouvez créer une bibliothèque de classes dans Windows Forms, qui a une méthode pour afficher le formulaire, puis génère la bibliothèque de classes pour COM Interop. Vous pouvez utiliser ce fichier DLL de Visual Basic 6.0 ou Microsoft Foundation Classes (MFC), et à partir de l'un ou l'autre de ces environnements vous pouvez appeler la méthode Form.ShowDialog pour afficher le formulaire.

Pour prendre en charge COM Interop en affichant un Windows Form avec la méthode ShowDialog

  • Remplacez tous les appels à la méthode Form.Show par des appels à la méthode Form.ShowDialog dans votre composant .NET Framework.

Voir aussi

Tâches

Comment : prendre en charge l'interopérabilité COM en affichant chaque Windows Form sur son propre thread

Comment : prendre en charge l'interopérabilité COM en affichant les Windows Forms sur un thread partagé

Concepts

Exposition de composants .NET Framework à COM

Autres ressources

Applications Windows Forms et non managées