Changer color datagridview cell à partir d'un second form

Résolu
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 - Modifié par Whismeril le 29/04/2015 à 20:21
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 - 29 avril 2015 à 21:51
Bonjour,
Je voudrais changer le style de certaine cellule d'un datagridview qui se trouve sur un autre form. Le principe: j'ai un premier form avec un bouton qui affiche le 2ème form ainsi qu'une textbox. Je voudrais changer toutes les cellules qui contiennent le contenu de la textbox dans le datagridview du second form. Voici mon code:

        public void AffichageLettres(string _lettre)
        {
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count - 1; j++)
                {
                    DataGridViewCell cell = dataGridView1.Rows[i].Cells[j];
                    if (cell.Value.ToString() == lettre.ToString())
                    {
                        cell.Style.ForeColor = Color.Red;
                        cell.Style.BackColor = Color.Green;
                    }
                }
            }
        }


J'appelle cette méthode comme ceci:
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            Form2 form2 = new Form2(T);
            if (e.KeyData == Keys.Enter)
            {
                form2.AffichageLettres(textBox1.Text.ToUpper());
            }
        }

(Le T est juste un tableau de valeurs me permettant de remplir mon datagridview)

J'ai actuellemet besoin de réouvrir le 2ème form pour que le style s'applique !!!

EDIT: Précision du langage dans la coloration syntaxique.

Merci

1 réponse

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
29 avril 2015 à 20:27
Bonsoir,

dans un premier temps, pour remplir un datagridview, le binding souvent c'est plus simple.

Pour ton problème, je ne sais pas si ton problème vient de là (voir le commentaire)

private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            Form2 form2 = new Form2(T);//ici tu crées une NOUVELLE instance de Form2, pas celle qui est affichée, et comme tu ne mets pas de show, elle est chargée quelque part en RAM.
            if (e.KeyData == Keys.Enter)
            {
                form2.AffichageLettres(textBox1.Text.ToUpper());
            }
        }


Pour ce point, qui est peut être la source de ton problème, il faut que ta variable qui pointe sur l'instance de Form2 soit déclarée avec une portée qui englobe cette méthode ET ne pas en redéclarer une ici.
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
29 avril 2015 à 21:18
Merci, je venais justement de trouver ma réponse après plusieurs heures de recherche et effectivement, c'était simplement la portée de la variable qui n'était pas bonne !

Concernant le binding, l'ennui c'est que je colore différement chaque cellule en fonction de son contenu. Devrais-je le faire après?
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656 > edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016
29 avril 2015 à 21:49
Ben là je te dirais bien de passer en WPF, ça le ferait tout seul....
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
29 avril 2015 à 21:51
Connais rien du tout en WPF ^^
0
Rejoignez-nous