Appeler des objets en créant les noms dynamiquement [Résolu]

deejay2221 9 Messages postés lundi 4 avril 2005Date d'inscription 9 septembre 2008 Dernière intervention - 7 mars 2007 à 22:37 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 8 mars 2007 à 00:14
Bonjours

J'ai un programme avec 81 textbox. J'aimerais bien être capable d'appeler chacun des textbox en créant le nom dynamiquement.
Par exemple, au lieu de faire:

if (case1.Text != "")
{
   case1.locked = true;
}
if (case2.Text != "")
{
   case2.locked = true;
}
// (ainsi de suite, pour chaque case, ce qui est très long et redondant)

je voudrais être capable de faire (exemple)

for (int i = 0; i != 81; ++i)
{
   (nom) case = "case" + i; // exemple...
   if (case.Text != "")
   {
      case.locked= true;
   }
}
// Ne prend que quelques lignes et est moins long pour les corrections

Je sais que le code n'a aucun sens mais c'est seulement pour que vous puissiez comprendre ce que je veux dire.
Je ne sais pas non plus si ça ce fait en C# mais j'ai déjà vu des langages (javascript je crois) qui pouvais le faire.

Merci en avance.
Afficher la suite 

4 réponses

Répondre au sujet
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 7 mars 2007 à 23:10
+3
Utile
Salut,
Ca ne marche pas comme ça

Ce que tu peux faire par exemple, c'est itérer dans ta collection de TextBox avec un foreach et regarder le contenu du texte:

foreach(Control c in this.Controls)
{
   TextBox txt = c as TextBox;
    if(txt != null && txt.Text != String.Empty)
   {
      txt.Locked = true;
   }
}

<hr />
-Blog-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 8 mars 2007 à 00:14
+3
Utile
Je pense que tu n'as pas du regarder le code que je t'ai mis plus haut...
Il marche avec les Textbox sans problème, essayes tu verras.

Sinon, si tu fais un jeu du sue du cul, hé bien... t'aurais largement meilleur temps de tout dessiner avec des graphics, parce que si tu fait un Control par case, niveau performance ça va pas être le pied...

<hr />
-Blog-
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Bidou
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 7 mars 2007 à 23:10
0
Utile
J'ajouterais que 80 TextBox sur une form => faut revoir ton programme au niveau de la conception

<hr />
-Blog-
Commenter la réponse de cs_Bidou
deejay2221 9 Messages postés lundi 4 avril 2005Date d'inscription 9 septembre 2008 Dernière intervention - 7 mars 2007 à 23:41
0
Utile
En fait ce que je fais c'est un jeu de sudoku alors il faut absolument les 81 cases

En ce moment, itérer dans la collection d'objet avec un
foreach (Control c in Controls)
c'est ce que je fais. Le problème est que les propriétés que je peux utiliser sont limités à ceux de base (propriété communes à tous les contrôles). C'est logique puisque on boucle sur tous les contrôles et non tous les TextBox, donc je n'ai pas accès aux proprités propres aux textbox (tel que locked)

Ce qui serait utile en fait c'est d'avoir un
foreach (Textbox t in (qqchose))
{
   // ...
}
si c'est faisable, encore une fois

Merci
Commenter la réponse de deejay2221

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.