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

C# Discussion :

Mettre une couleur de fond [C#]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut Mettre une couleur de fond [C#]
    Bonjour,

    J'ai actuellement crée une application permettant de comparer le contenu de deux bases de données (la BDD sur le serveur test et la BDD sur le serveur de prod'). Le form final ressemblant à ceci :



    Au niveau de l'encadré jaune, on retrouve deux rectangle "Messages".
    J'aimerais comparer les deux et, afficher en rouge, par exemple, les lignes qui apparaissent d'un côté et pas de l'autre.

    J'ai écrit ceci mais rien ne se passe :

    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
    22
    23
    24
    private void DataGridMsg1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
            {
                //Color controlColor = default(Color);
     
                foreach (DataGridViewRow iRow in DataGridMsg1.Rows)
                {
                    foreach (DataGridViewRow jRow in DataGridMsg2.Rows)
                    {
                        if (DataGridMsg1.CurrentCell.Value == DataGridMsg2.CurrentCell.Value)
                        {
                            DataGridMsg1.Backcolor= Color.White;
                            DatagGridMSg1.Backcolor = Color.White;
                        }
                        else
                        {
                            DataGridMsg1.BackColor = Color.Red;
                            DataGridMsg2.BackColor = Color.Red;
                        }
                    }
     
                }
     
     
            }
    Je vous remercie!

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut
    J'ai modifié mon code comme ceci :

    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
    22
    23
    24
     
    private readonly Color _difference = Color.Red;
    private readonly Color _similitude = Color.White;
     
    private void Form_DiffRuleDetails_Shown(object sender, EventArgs e)
            {
                foreach (DataGridViewRow iRow in DataGridMsg1.Rows)
                {
                    foreach (DataGridViewRow jRow in DataGridMsg2.Rows)
                    {
                        if (DataGridMsg1.CurrentCell == DataGridMsg2.CurrentCell)
                        {
                            iRow.DefaultCellStyle.BackColor = _similitude;
                            jRow.DefaultCellStyle.BackColor = _similitude;
                        }
                        else if ((DataGridMsg1.CurrentCell != DataGridMsg2.CurrentCell))
                        {
                            iRow.DefaultCellStyle.BackColor = _difference;
                            jRow.DefaultCellStyle.BackColor = _difference;
                        }
                    }
     
                }
            }
    Malheureusement, il m'affiche toutes les lignes en rouge désormais.Même lorsqu'elles sont rigoureusement identiques.

  3. #3
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,

    Citation Envoyé par Rosees Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridMsg1.CurrentCell == DataGridMsg2.CurrentCell
    Tu ne change pas de cellule active (DataGridView.CurrentCell) avec ton foreach!
    De plus, tu compare 2 DataGridViewCell qui forcement ne sont pas égales..

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut
    Citation Envoyé par -N4w4k- Voir le message
    Salut,



    Tu ne change pas de cellule active (DataGridView.CurrentCell) avec ton foreach!
    De plus, tu compare 2 DataGridViewCell qui forcement ne sont pas égales..
    J'ai remplacé avec DatagridMsg1.CurrentCell.Value mais j'obtiens le même résultat...de plus, je ne vois pas comment changer de cellule active.

  5. #5
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Ce que je veux dire c'est que cela ne sert à rien d'avoir un foreach et de comparer toujours les mêmes cellules. Pourquoi ne compare tu pas les iRow et jRow du foreach?

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 38
    Par défaut
    car je ne sais pas comment faire, je suis débutant en C# et en programmation en général

Discussions similaires

  1. [WD12] Mettre une couleur de fond dans un champ d'un etat
    Par galsen.quebec dans le forum WinDev
    Réponses: 2
    Dernier message: 01/06/2011, 15h08
  2. Mettre une couleur de fond à des dates.
    Par csilas dans le forum C#
    Réponses: 2
    Dernier message: 04/04/2010, 13h49
  3. Mettre une couleur de fond à une zone de saisie.
    Par supertoms dans le forum IHM
    Réponses: 1
    Dernier message: 19/04/2008, 18h40
  4. Réponses: 6
    Dernier message: 20/09/2007, 06h26
  5. Je n'arrives pas a mettre une couleur de fond
    Par metalcoyote dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 03/05/2007, 17h42

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