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

facbest 47 Messages postés lundi 19 mars 2007Date d'inscription 7 janvier 2014 Dernière intervention - 26 nov. 2008 à 19:00 - Dernière réponse : facbest 47 Messages postés lundi 19 mars 2007Date d'inscription 7 janvier 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
facbest 47 Messages postés lundi 19 mars 2007Date d'inscription 7 janvier 2014 Dernière intervention - 27 nov. 2008 à 11:29
3
Merci
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 .....

Merci facbest 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de facbest
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 26 nov. 2008 à 20:09
0
Merci
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
---------------------
Commenter la réponse de billou_13
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 26 nov. 2008 à 20:10
0
Merci
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
---------------------
Commenter la réponse de billou_13
facbest 47 Messages postés lundi 19 mars 2007Date d'inscription 7 janvier 2014 Dernière intervention - 26 nov. 2008 à 22:11
0
Merci
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.
Commenter la réponse de facbest
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 26 nov. 2008 à 23:03
0
Merci
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-
Commenter la réponse de cs_Bidou

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.