Changer color datagridview cell à partir d'un second form [Résolu]

edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 29 avril 2015 à 11:37 - Dernière réponse : edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 29 avril 2015 à 20:27
0
Utile
3
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.
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 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?
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention > edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 29 avril 2015 à 21:49
Ben là je te dirais bien de passer en WPF, ça le ferait tout seul....
edwinzap 159 Messages postés samedi 29 septembre 2012Date d'inscription 21 juin 2016 Dernière intervention - 29 avril 2015 à 21:51
Connais rien du tout en WPF ^^
Commenter la réponse de Whismeril

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.