Charger un UserControl dynamiquement dans une WinForm [Résolu]

cs_tonitto 46 Messages postés mercredi 8 décembre 2004Date d'inscription 2 mars 2012 Dernière intervention - 28 oct. 2009 à 09:02 - Dernière réponse :  Hugues
- 7 oct. 2014 à 23:30
Bonjour,

Dans mon projet, j'ai créer plusieurs USerControls, je doit en charger un à la fois en fonction du choix de l'utilisateur (à l'exécution).

Ce que je voudrais faire pour que l'application puisse évoluer, c'est de pouvoir charger une dll (qui contient un UserControl) à l'aide d'une boite de dialogue et pouvoir afficher le control qu'elle contient.

En gros, je voudrais que je développe les UserControls à part et pouvoir les charger sans devoir modifier mon code un peu comme le fait l'outil UserControlTestContainer de Microsoft. Alors si vous avez une idée comment faire ça m'aiderai beaucoup ?

D'avance merci et bonne journée

Aniss
Afficher la suite 

5 réponses

Répondre au sujet
cs_tonitto 46 Messages postés mercredi 8 décembre 2004Date d'inscription 2 mars 2012 Dernière intervention - 28 oct. 2009 à 09:55
+1
Utile
1
Bonjour a tous,

J'ai trouvé une solution.

Je met le code ça peut servir ;)

Assembly u = Assembly.LoadFile(path);

Type t2 = u.GetType("TextPane.TextPane"); //Nom complet (NameSpace.Type)

object o = Activator.CreateInstance(t2);

this.panel1.Controls.Add((UserControl)o);

this.panel1.Refresh();


Bonne journée

Aniss
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_tonitto
chlankboot 4 Messages postés mardi 13 avril 2004Date d'inscription 4 novembre 2009 Dernière intervention - 4 nov. 2009 à 07:47
0
Utile
Merci pour avoir partagé, ton code m'a sauvé la vie
Commenter la réponse de chlankboot
cs_tonitto 46 Messages postés mercredi 8 décembre 2004Date d'inscription 2 mars 2012 Dernière intervention - 4 nov. 2009 à 08:31
0
Utile
de rien, content de t'avoir aidé

Aniss
Commenter la réponse de cs_tonitto
chlankboot 4 Messages postés mardi 13 avril 2004Date d'inscription 4 novembre 2009 Dernière intervention - 4 nov. 2009 à 13:58
0
Utile
En fait ce n'est pas exactement l'application dont tu fais usage, mais qqe chose de similaire : je crée dynamiquement des états (crystal reports) dont le modèle est préalablement conçu. J'ai une table de définitions des états avec tous les paramètres, requêtes, champs spéciaux ... et le nom de du modèle de l'état tel que défini dans l'IDE et à partir duquel l'objet dynamique (état) sera crée.
            For Each SelectedFilter As DataGridViewRow In _filters.SelectedRows()
                ActulalQuery = My_Report.SQL_Query
                SQLOp = " Where "
                If InStr(ActulalQuery, "Where") Then SQLOp = " And "
                GetThatField(SelectedFilter, My_Report.Filter_SQL_Field_Index, Dummy)
                ActulalQuery ActulalQuery & SQLOp & My_Report.Filter_SQL_Field & " '" & Dummy & "'"
                GetThatField(SelectedFilter, 2, Dummy)
                Dim ObjName As String = "BVSATS_Data_Center" & "." & My_Report.Internal_Report_Name
                Dim T As Type = System.Reflection.Assembly.GetExecutingAssembly.GetType(ObjName)
                Dim MyRpt As Object = Activator.CreateInstance(T)
                Dim MyRptViewer As New _RPT
                Form_Main.Prepare_The_Report(MyRpt, ActulalQuery, MyRptViewer)
                MyRpt.SetParameterValue(0, start_date.Value)
                MyRpt.SetParameterValue(1, end_date.Value)
                MyRpt.SetParameterValue(2, Txt_Title.Text)
                MyRpt.SetParameterValue(3, Dummy)
                MyRptViewer.Text = My_Report.Report_Title & " - " & Dummy
                Form_Main.Show_The_Report(MyRptViewer)
            Next
Commenter la réponse de chlankboot

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.