System.Drawing.Color ...

Résolu
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014 - 26 nov. 2008 à 19:00
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014 - 27 nov. 2008 à 11:29
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

facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014
27 nov. 2008 à 11:29
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 .....
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
26 nov. 2008 à 20:09
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
---------------------
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
26 nov. 2008 à 20:10
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
---------------------
0
facbest Messages postés 47 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 7 janvier 2014
26 nov. 2008 à 22:11
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
26 nov. 2008 à 23:03
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-
0
Rejoignez-nous