System.Drawing.Color ... [Résolu]

Signaler
Messages postés
47
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
7 janvier 2014
-
Messages postés
47
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
7 janvier 2014
-
Bonsoir.

Voilà mon problème :

J'ai 20 textBox avec chacun un nombre donc le text est black
que j'ai mis en tableau.
Suite à un Random je sélectionne 3 nombres aléatoire dans une boucle do while
et à partir d'un click je voudrais que les numéros correspondant des textBox
change de couleur.
J'ai bien codé et cela fonctionne (mais comme un bourrin) avec des lignes en n'en
plus finir.
exemple:
*************************************
if ( Arg1.ToString() == tableau [0])
{
texteBox1.ForeColor = System.Drawing.Color.Red;
}
-------
19 lignes
-------
et pareil avec Arg2 et Arg3
***************************************
Ma question est la suivante:
comment je peut faire pour raccourcir le code avec une boucle ?

Je pense que l'on peut faire mais ......

Merci d'avance.

5 réponses

Messages postés
47
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
7 janvier 2014

Bonjour.

Je suis super content car j'ai solutionner avec le premier
code que vous m'avez indiqué.

for (j = 0; j < melange.Length ; j++)
                {
                    if (Arg1.ToString() melange[j] || Arg2.ToString() melange[j])
                    {

                        TextBox currentTextBox = this. tableLayoutPanel1. Controls[string.Concat("textBox",melange[j])] as TextBox;

                        currentTextBox.ForeColor = System.Drawing.Color.Red;

un grand merci à vous !

 je suis débutant depuis 3 mois en c#  dur dur .....
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
22
Bonsoir,

Si tes 20 textboxs ont des propriétés name qui suivent une logique: textBox1, textBox2, etc...
Tu peux alors avoir accès à tout tes textbox de la façon suivante:

for

(
int
i=1;
i<=20;
i++)
{

  TextBox
currentTextBox =
this.
Controls[
string.
Concat(
"textBox",
i)]
as
TextBox;

  currentTextBox.
ForeColor =
System.
Drawing.
Color.
Red;
}

A toi après de coder ta logique pour la mise en place des couleurs.

Bonne soirée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
22
Désolé pour les problèmes d'espaces, le copier/coller n'a pas très bien marché ^^

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
47
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
7 janvier 2014

Petit problème ....

je pose le code complet  il me fait une erreur "La référence d'objet n'est pas définie
à une instance d'un objet."

  {
            int j = 0;
           
            string[] melange = {textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text,textBox5.Text,textBox6.Text, textBox7.Text,textBox8.Text,textBox9.Text,textBox10.Text,textBox11.Text,textBox12.Text
 ,textBox13.Text,textBox14.Text,textBox15.Text,textBox16.Text,

             textBox17.Text,textBox18.Text,textBox19.Text,textBox20.Text};

            Random alea = new Random();

              do
                {
                    Arg1 = alea.Next(melange.Length);

                    Arg2 = alea.Next(melange.Length);
                }
                while ((Arg1.Equals(Arg2)));         
           
   
            if (Arg1.Equals(Arg2))
            {
                MessageBox.Show("  Recommencer !");

                Melange_2.Enabled = true;

                button74.Enabled = false;

            }

            else
            {

                for (j = 0; j < melange.Length ; j++)
                {
                    if (Arg1.ToString() melange[j] || Arg2.ToString() melange[j])
                    {

                        TextBox currentTextBox = this.Controls[string.Concat("textBox", j)] as TextBox;

                        currentTextBox.ForeColor = System.Drawing.Color.Red; // Problème à cette ligne

                    }

                }
}

je suis perdu !

Bonsoir.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Bourrin... le mot est faible!

Un exemple très vite fait, il faudra éven. adapté:

public
partial
class
Form1 :
Form
{
  
public
const
int LEN = 4;

  
public Form1()
   {
     
this.InitializeComponent();
   }

  
private
void Form1_Load(
object sender,
EventArgs e)
   {
     
for (
int i = 0; i < LEN; i++)
     {
        
for (
int j = 0; j < LEN; j++)
        {
            
TextBox tb =
new
TextBox();
            tb.Width = 20;
            tb.Location =
new
Point(30 * i + 20, 30 * j + 20);
            tb.Tag = i * LEN + j;
           
this.groupBox1.Controls.Add(tb);
         }
      }
   }

  
private
void button1_Click(
object sender,
EventArgs e)
   {
     
Random r =
new
Random();
     
int x = r.Next(0, LEN * LEN);

     
Control c = Find(x);
      if (c !null) c.BackColor
Color.Red;
   }

  
private
Control Find(
int key)
   {
     
foreach (
Control c
in
this.groupBox1.Controls)
      {
         
if (c
is
TextBox && (
int)(((
TextBox)c).Tag) == key)
return c;
      }
     
return
null;
   }
}

<hr />
-Blog-
-Site Perso-