Picturebox, apelle celle qui est donnée dans une textbox

Résolu
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 - 7 mars 2011 à 21:47
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 - 8 mars 2011 à 19:07
Bonjour,

Voilà j'ai un petit problème que je n'arrive pas à résoudre, j'ai fait des recherches sur google sans succès.

Je vais essayer d'être la plus claire possible.
J'ai un nombre/chiffre N, compris entre 1 à 20 qui apparait dans une textbox, de ce N je voudrai que la pictureBoxN devienne null .
C'est à dire :
- si la textbox donne 3, la pictureBox3.Image = null;
- si la textbox donne 7, la pictureBox7.Image = null;

Je ne sais pas si je me fais bien comprendre.

Merci de votre attention et bonne soirée.
A voir également:

2 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
8 mars 2011 à 14:47
Salut

Tu as plusieurs solutions :
- La première, la plus propre et la plus performante, c'est de faire un tableau de pictureBox.
PictureBox[] tableau = new PictureBox[20];
// Puis initialisation des éléments du tableau, et ensuite tu peux faire ça :
tableau[Convert.ToInt32(textBox1.Text)].Image = null;


- La deuxième, qui ne fonctionne qu'avec WinForms, c'est d'accéder au contrôle par son nom.
((PictureBox)this.Controls["pictureBox" + textBox1.Text]).Image = null;


- La dernière, qui fonctionne dans tous les cas A CONDITION QUE L'ELEMENT EN QUESTION SOIT PUBLIC (donc il faudrait mettre toutes tes PictureBoxX public, mais qui n'est ni performante ni simple, c'est d'utiliser la réflexion.
// En haut, dans les using, tu ajoutes
using System.Reflection;

// Là où tu veux modifier la propriété
// On commence par récupérer le type de ta fenêtre
Type t = this.GetType();
// On prépare la recherche d'un champ public nommé comme tu veux
FieldInfo fi = t.GetField("pictureBox" + textBox1.Text);
// On récupère le champ de la fenêtre actuelle et on modifie la valeur
((PictureBox)fi.GetValue(this)).Image = null;


La dernière solution est intéressante à connaître, mais à éviter tant que possible pour des raisons de performance (mais elle est parfois indispensable).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
8 mars 2011 à 19:07
Merci beaucoup.
J'ai choisi cette solution :
((PictureBox)this.Controls["pictureBox" + textBox1.Text]).Image = null;


Merci encore.
0
Rejoignez-nous