[c#] Référence à des objets dynamiques

Résolu/Fermé
BoB2000 - 16 juin 2011 à 14:54
 BoB2000 - 16 juin 2011 à 16:25
Bonjour à tous,
|

Étant débutant point de vue c#, je butte sur quelque chose et je ne vois pas comment faire.
J'ai fait le tour du net, essayé plusieurs méthodes mais rien ne correspond à mon problème. En même temps je pense que ce que j'essaye de faire est assez tordu ^^
|
Donc voila, déjà juste pour vous expliquer ce que j'ai à l'esprit :
Vous connaissez tous je pense le mot clé c++ "external" qui permet, entre autre, d'appeler une fonction externe qui ne sera connu que lors de la post compilation et des link. Dans ce cas le compilateur ne posera pas de questions sur la/les fonctions externes.
|
Bien,
dans le cas présent, j'ai une windows form qui, à la sélection d'une option, va lire dans un fichier de configuration les labels, textbox & cie. dont j'ai besoin. ( les objets varient en fonction de l'option choisi )
Par exemple la ligne suivante de mon fichier de config :
#MP#TXTB#ProductName

Va faire ceci :
Label lbl = new Label();
lbl.Name = "lbl_" + text[2].Trim().ToString();
lbl.Text = text[2].Trim().ToString();
                                       

ComboBox cb = new ComboBox();
cb.Name = "cbBox_" + text[2].Trim().ToString();
                                       
grpBox_mandParam.Controls.Add(lbl);
grpBox_mandParam.Controls.Add(cb);

Et donc me donner : un label '' lbl_ProductName '' et une comboBox '' cbBox_ProductName ''

Ceci fonctionne très bien, tout est bien créé.
|
Maintenant mon problème est : comment lire/accéder aux informations que l'utilisateur y mettra.
Vu que mes objets sont créé durant le déroulement de l'application, lors de la compilation il n'existe pas. Et j'aimerai avoir une fonction, par exemple RecupData(), pour tout récupérer.
Par exemple si je fais dans une fonction :
string s = cbBox_ProductName.ItemSelected.toString();

Je peux pas compiler, et l'erreur est : cbBox_ProductName, non définie, ce qui ai logique vu qu'elle le sera plus tard.
|
J'espère que vous voyez ou je veux en venir.
En tout cas, si quelqu'un pouvait éclairer ma lanterne, je lui en serais très reconnaissant.
|
Merci


1 réponse

C'est bon, j'ai trouvé.
Pour ceux qui voudraient savoir, voici comment j'ai fait :
grpBox_mandParam.Controls[grpBox_mandParam.Controls.IndexOfKey("txtBox_ProductName")].Text = "yeepee";


Je décompose :
grpBox_mandParam.Controls[X].text = "yeepee";

Ceci permet donc de mettre du texte dans le Control.Text situé à l'index X de ma groupeBox.

grpBox_mandParam.Controls.IndexOfKey("txtBox_ProductName")

Permet de savoir l'index du control dont le nom est txtBox_ProductName.

L'un combiné dans l'autre permet d'avoir accès à toutes les propriétés du control.
Voila :)
1