2016-06-14 6 views
0

Nous avons besoin d'exécuter l'application de bureau WinForm Smart Client dans le navigateur. L'article suivant explique comment héberger un WinForm dans l'application de navigateur WPF (XBAP).Conversion de Smart Client en XBAP pour l'exécuter dans le navigateur

http://www.codeproject.com/Articles/31429/Embedding-a-NET-WinForms-Application-in-an-Interne

Mais notre application est basée sur l'architecture Smart Client (Smart Client Software usine - Package d'orientation). Nous n'avons donc aucun contrôle sur la création et l'affichage des formulaires. Quelqu'un peut-il partager les détails de ce qui sera nécessaire pour héberger un client intelligent dans une application basée sur un navigateur WPF?

Répondre

0

Enfin obtenu une solution de contournement pour y parvenir.

Surcharge Méthode de démarrage de la classe WindowsFormsApplication qui exécute le formulaire Shell. Mais cela conduit à un autre problème de forme étant disposé. La méthode CabApplication.Run appelle en interne la méthode Start, puis supprime le formulaire une fois qu'il est fermé. Comme je n'affiche pas le formulaire dans la méthode Start, il va directement à disposition.

Pour remédier à cela, j'ai commenté l'appel de la méthode Run dans la structure SCSF et géré dans l'application. Je ne suis pas sûr si faire un changement de cadre est une bonne idée, mais cela a fonctionné pour moi.

Pour obtenir l'objet Shell dans l'application XBAP, j'ai créé une méthode dans l'application WinForm, qui renvoie l'objet Form. J'ai également utilisé un événement dans AfterShellCreated pour informer l'application XBAP de la création de Shell.

Avec tous ces changements, je suis capable d'héberger un client intelligent dans une application basée sur un navigateur WPF.

Espérons que cela aidera les autres.