Adresser un objet dont lenomest construit dynamiquement

Le
B#
Bonjour a tous,

Comment puis-je faire pour me servir d'un objet (existant) en construisant
son nom dynamiquement dans un string ?

Dans un formulaire, j'ai une centaire de textbox dont le nom se termine par
un N°, et je souhaiterai me servir de certaines d'entre elles en fonction du
N° saisi par l'utilisateur. Par exemple,si l'utilisateur saisie un "3", je
souhaiterais pouvoir effectuer des calculs en récupérant le contenu des
textbox Ca3,Pb3,Ag3,etc.

merci par avance,

C#
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick Philippot
Le #12127171
Bonjour,

Comment puis-je faire pour me servir d'un objet (existant) en
construisant son nom dynamiquement dans un string ?



Pour créer une instance d'une classe à partir du nom d'assemblage et du nom
de classe sous forme de chaîne de caractères, utilisez
System.Activator.CreateInstance.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
B#..
Le #12127151
Merci de votre réponse.
Mon problème n'est pas de créer l'instance mais d'utiliser une instance
existante : Les textbox sont déjà instanciées et je souhaite les utiliser en
construisant leur nom dynamiquement dans le code.

Merci d'avance,

B#


"Patrick Philippot" message de news:
Bonjour,

Comment puis-je faire pour me servir d'un objet (existant) en
construisant son nom dynamiquement dans un string ?



Pour créer une instance d'une classe à partir du nom d'assemblage et du
nom de classe sous forme de chaîne de caractères, utilisez
System.Activator.CreateInstance.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr





Gilles TOURREAU
Le #12127141
Le Fri, 31 Aug 2007 13:39:37 +0200, B#.. écrit:

Merci de votre réponse.
Mon problème n'est pas de créer l'instance mais d'utiliser une instance
existante : Les textbox sont déjà instanciées et je souhaite les
utiliser en
construisant leur nom dynamiquement dans le code.

Merci d'avance,

B#


"Patrick Philippot" message de news:
Bonjour,

Comment puis-je faire pour me servir d'un objet (existant) en
construisant son nom dynamiquement dans un string ?



Pour créer une instance d'une classe à partir du nom d'assemblage et du
nom de classe sous forme de chaîne de caractères, utilisez
System.Activator.CreateInstance.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr










En affectant la propriété VotreControle.Name.

Sinon, pouvez détailler plus précisement ce que vous voulez faire ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Patrick Philippot
Le #12127121
B#.. wrote:
Mon problème n'est pas de créer l'instance mais d'utiliser une
instance existante : Les textbox sont déjà instanciées et je souhaite
les utiliser en construisant leur nom dynamiquement dans le code.



Ah bon! Pour accéder à un contrôle quelconque par son nom dans une Form:

Toute WinForm possède une propriété Controls qui est une collection
(ControlCollection) de Controls. Vous pouvez utiliser la méthode Find de
cette classe pour récupérer une instance d'un contrôle par son nom et le
transtyper de manière adéquate.

Control[] C = Controls.Find("TextBox1", false);
if (C.GetLength(0) != 0)
{
TextBox t = (TextBox) C[0];
t.Text = "Toto";
}

Find retourne un array de tous les contrôles portant ce nom, d'où le [0].

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
B#..
Le #12183651
Exactement ce que je cherchais !!, Merci beaucoup de votre aide.

B#


"Patrick Philippot" message de news:
B#.. wrote:
Mon problème n'est pas de créer l'instance mais d'utiliser une
instance existante : Les textbox sont déjà instanciées et je souhaite
les utiliser en construisant leur nom dynamiquement dans le code.



Ah bon! Pour accéder à un contrôle quelconque par son nom dans une Form:

Toute WinForm possède une propriété Controls qui est une collection
(ControlCollection) de Controls. Vous pouvez utiliser la méthode Find de
cette classe pour récupérer une instance d'un contrôle par son nom et le
transtyper de manière adéquate.

Control[] C = Controls.Find("TextBox1", false);
if (C.GetLength(0) != 0)
{
TextBox t = (TextBox) C[0];
t.Text = "Toto";
}

Find retourne un array de tous les contrôles portant ce nom, d'où le [0].

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Publicité
Poster une réponse
Anonyme