IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

changer la couleurs de certaines cellules datagridview


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut changer la couleurs de certaines cellules datagridview
    Bonjour,
    Je voudrais changer la couleur de certaines cellules dans un datagridview. J'ai utilisé les codes suivants pour l'effectuer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    dgvMissingData.DataSource = missingValue;
     
                if (missingValue != null)
                {
     
                    for (int j = 0; j < dgvCleanedData.Columns.Count; j++)
                    {
                        for (int i = 0; i < dgvCleanedData.Rows.Count-1; i++)
                        {
                            if (dgvMissingData[j,i].Value.ToString().Equals(""))
                            {
                                dgvMissingData[j,i].Style.BackColor = Color.Red;
                            }
                            else if (!dgvMissingData[j,i].Value.ToString().Equals(
                                dgvCleanedData[j,i].Value.ToString()))
                            {
                                dgvMissingData[j,i].Style.ForeColor = Color.Green;
                            }
                        }
                    }
                }
    Le problème est que rien ne change à l'affichage. Pourtant le paramètre backcolor récupère les nouvelles valeurs qui y sont affectées. Est ce que quelqu'un peut m'aider afin de resoudre ce problème?
    merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Utilises plutôt l'évènement cellFormatting.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Utilise plutôt l'évènement CellPainting, qui va se produire pour chaque cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
    {
        if (e.Value == ...)
        {
            e.CellStyle.BackColor = ...
        }
        else
        {
            ...
        }
    }
    Citation Envoyé par hotsizzle Voir le message
    Utilises plutôt l'évènement cellFormatting.
    CellFormatting, c'est pour formater la valeur, pas pour changer l'apparence

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    autant pour moi je me suis trompé d'évènement.

  5. #5
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par tomlev Voir le message
    CellFormatting, c'est pour formater la valeur, pas pour changer l'apparence
    Sauf que la MSDN dit que :
    Si la mise en forme standard est insuffisante, vous pouvez personnaliser la mise en forme en gérant l'événement CellFormatting. Cet événement vous permet d'indiquer la valeur d'affichage exacte, ainsi que les styles de cellule, tels que les couleurs d'arrière-plan et de premier plan, à utiliser pour l'affichage des cellules. Cela signifie que vous pouvez gérer cet événement pour tout type de mise en forme de cellule, que la valeur de la cellule elle-même ait besoin ou non d'une mise en forme.
    pbatty : plutôt que modifier les formats de chaque cellule, ce qui n'est pas performant pour des raisons détaillées ici, la meilleure façon de faire est de modifier les valeurs du CellFormattingEventArgs auquel tu auras accès en t'abonnant à CellFormatting.

    Encore un p'tit lien pour la route : http://msdn.microsoft.com/fr-fr/library/z1cc356h.aspx
    ಠ_ಠ

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    ben en faite j'avais pas si tord que ca

  7. #7
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    Merci pour votre aide. le changement de couleur dans les cellules fonctionnent bien. J'ai une difficulté à changer l'entête des lignes. J'ai essayé de trouver la solution dans rowpostPoint mais j'ai pas pu trouver la solution. Est ce que vous avez une idée pour modifier la couleur des entêtes des lignes.

Discussions similaires

  1. Changer la couleur d'une cellule d'un DataGridView
    Par jubourbon dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/07/2009, 17h37
  2. [JTable] Changer le style de certaines cellulles
    Par bourinator dans le forum Composants
    Réponses: 4
    Dernier message: 08/10/2005, 14h40
  3. [JTable] Changer la couleur d'une cellule
    Par Freak49 dans le forum Composants
    Réponses: 1
    Dernier message: 06/10/2005, 18h11
  4. Réponses: 4
    Dernier message: 01/10/2005, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo