Créer une instance d'une feuille.

[Résolu]
Signaler
Messages postés
178
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
30 juillet 2008
-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
-
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

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
Form f = (Form)ass.CreateInstance(sForm, new object[] { taliste d'arguments });

Sébastien FERRAND
Messages postés
178
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Dans le deuxiemen argument de la fonction createinstance, il me demande un boolean. Cela ne correspond pas au parametre de mon constructeur.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
[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
Messages postés
178
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
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.
Messages postés
178
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Merci sebmafate, c'est exactement ce que je voulais.

Juste une question, comment as tu trouvé ça ???
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
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