2008-09-09 9 views
6

Je veux charger une application de bureau, par réflexion, comme un contrôle dans une autre application.Pouvez-vous charger un formulaire .Net en tant que contrôle?

L'application que je reflète est une application héritée - je ne peux pas y apporter de modifications.

Je peux accéder dynamiquement au formulaire, mais je ne peux pas le charger en tant que contrôle.

Dans .NET Form étend sur Contrôle, et je peux affecter le formulaire reflété comme un contrôle, mais il lève une exception d'exécution.

Les formulaires ne peuvent pas être chargés en tant que contrôles.

Existe-t-il un moyen de convertir le formulaire en contrôle?

Répondre

10

Oui, cela fonctionne très bien. Je travaille actuellement sur une application .NET qui charge des formulaires dans un panneau sur un formulaire hôte.

L'extrait pertinent:

// setup the new form 
form.TopLevel = false; 
form.FormBorderStyle = FormBorderStyle.None; 
form.Dock = DockStyle.Fill; 
form.Show (); 

// add to the panel's list of child controls 
panelFormHost.Controls.Add (form); 
+0

Testé et cela fonctionne. Merci :-) – Keith

1

Vous devriez être en mesure d'ajouter le formulaire au contrôle collection de votre formulaire parent ...

Voir ici: http://vbcity.com/forums/topic.asp?tid=30539

Si cela échoue, essayez d'utiliser le modèle d'adaptateur pour créer un conteneur avec votre formulaire hérité à l'intérieur, puis le charger dans un MDI peut-être?

1

Quelle est l'exception que vous obtenez? Est-il possible que le contrôle lui-même donne l'exception (vs le cadre)? Peut-être quelque chose est appelé dans les applications d'origine Fonction principale qui n'est pas appelée?

+0

Je recevais une erreur liée à la propriété TopLevel, quelque chose que je ne pouvais pas définir sur un contrôle, mais pourrait sur un formulaire. – Keith

Questions connexes