Créer une instance d'une feuille.

Résolu
matlocker Messages postés 178 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 30 juillet 2008 - 13 sept. 2005 à 12:05
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 13 sept. 2005 à 15:02
Bonjour a tous,

Je cherchais a créer une instance d'une feuille a partir d'une variable string, et on m'a donné sur ce forum un code qui marche parfaitement. Le voici.

string sForm="NameSpace.Feuille";

System.Reflection.Assembly ass = System.Reflection.Assembly.GetExecutingAssembly();


Form f = (Form)ass.CreateInstance(sForm);

f.ShowDialog

Cependant si je possede un constructeur possedant un argument sur la feuille appellé je ne peux passer d'argument avec cette methode. Quelqu'un aurait -il une idée ?

Merci.

8 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 sept. 2005 à 14:11
arf ok...



j'ai compris... tu utilises Assembly.CreateInstance, essaye plutot Activator.CreateInstance :



Form f = (Form)Activator.CreateInstance(ass.GetType(sForm), new object[] { ... });




Sébastien FERRAND
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 sept. 2005 à 12:17
Form f = (Form)ass.CreateInstance(sForm, new object[] { taliste d'arguments });

Sébastien FERRAND
0
matlocker Messages postés 178 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 30 juillet 2008 1
13 sept. 2005 à 12:31
Dans le deuxiemen argument de la fonction createinstance, il me demande un boolean. Cela ne correspond pas au parametre de mon constructeur.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 sept. 2005 à 13:14
[C#]
public static [ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemobjectclasstopic.htm object] CreateInstance(
[ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemtypeclasstopic.htm Type] [ type],
[ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemobjectclasstopic.htm object][] [ args]
);



[C++]
public: static [ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemobjectclasstopic.htm Object]* CreateInstance(
[ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemtypeclasstopic.htm Type]* [ type],
[ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemobjectclasstopic.htm Object]* [ args] __gc[]
);



[JScript]
public static function CreateInstance(
[ type] : [ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemtypeclasstopic.htm Type],
[ args] : [ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemobjectclasstopic.htm Object][]
) : [ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemobjectclasstopic.htm Object];




Parameters

* type : The type of object to create.
* args : An array of arguments that match in number, order, and type the parameters
of the constructor to invoke. If args is an empty array or a null
reference (Nothing in Visual Basic), the constructor that takes no
parameters (the default constructor) is invoked.


Return Value


A reference to the newly created object.








Sébastien FERRAND
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
matlocker Messages postés 178 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 30 juillet 2008 1
13 sept. 2005 à 13:56
Dans la liste des surcharge de la methode createinstance j'ai que ca qui contient 2 arguments.
J'ai visual studio 2003 et le frameework 1.1
Mais j'ai pas du tout la signature que tu propose toi.

[C#]
public [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemobjectclasstopic.htm object] CreateInstance(
[ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemstringclasstopic.htm string] [ typeName],
[ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystembooleanclasstopic.htm bool] [ ignoreCase]
);

[C++]
public: [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemobjectclasstopic.htm Object]* CreateInstance(
[ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemstringclasstopic.htm String]* [ typeName],
[ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystembooleanclasstopic.htm bool] [ ignoreCase]
);

[JScript]
public function CreateInstance(
[ typeName] : [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemstringclasstopic.htm String],
[ ignoreCase] : [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystembooleanclasstopic.htm Boolean]
) : [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemobjectclasstopic.htm Object];


Paramètres

* typeName : Propriété [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemobjectclasstopic.htm Object] représentant le type, dont la culture, les arguments, le binder ainsi que les attributs d'activation ont la valeur une référence null (Nothing dans Visual Basic), et [ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/cpref/html/frlrfsystemreflectionbindingflagsclasstopic.htm BindingFlags] a la valeur Public ou Instance ou encore une référence null (Nothing) si typeName est introuvable.
0
matlocker Messages postés 178 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 30 juillet 2008 1
13 sept. 2005 à 14:41
Merci sebmafate, c'est exactement ce que je voulais.

Juste une question, comment as tu trouvé ça ???
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 sept. 2005 à 14:53
he he... je n'utilise jamais l'instanciation par l'assembly... j'utilise toujours l'objet Activator.



enfin, j'ai développé une appli dernièrement où j'ouvrais des onglets
contenant des usercontrols dynamiquement, et donc le nombre de
paramètres dans le constructeur était variable.

Sébastien FERRAND
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 sept. 2005 à 15:02
On apprend tout les jours quelque chose par ici.
Je ne connaissais pas l'Activator. Sens que ça va peut-être m'être utile.

Amicalement, SharpMao
0
Rejoignez-nous