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 :

Clignotement Gridview application windows Forms c#


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut Clignotement Gridview application windows Forms c#
    Bonjour tout le monde ,
    je voudrais faire genre d'une signalisation dans la grille faire clignoté
    la ligne rouge voilà l'evenement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      private void dataGridViewX1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
     
                    if (DateTime.Parse(dataGridViewX1.Rows[e.RowIndex].Cells[8].Value.ToString()).AddMonths(-1).Month == DateTime.Now.Month)
                    {
                        e.CellStyle.BackColor = System.Drawing.Color.Red;
                    }
     
     
     
            }
    les lignes de la grille qui ont cette condition devront clignoté pas seulement la couleur rouge jusqu'a maintenant j'ai seulement une couleur rouge
    qui s'affiche
    donc quesque je dois ecrire dans cette evenement du controle Timer


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      private void timer1_Tick(object sender, EventArgs e)
            {
               //j'ai tatoné sur cette condition mais je pense pas qu'elle marche
    if (this.dataGridViewX1.RowsDefaultCellStyle.ForeColor.Equals( System.Drawing.Color.Red))
                {
    this.dataGridViewX1.RowsDefaultCellStyle.ForeColor.Equals( System.Drawing.Color.White)
                }
     
            }

    Mercii

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Bonjour à vous,

    Pour facilement reconnaitre quel ligne faire clignoter ou pas, je vous conseille d'utiliser la propriété Tag de la ligne (DataGridViewRow.Tag). Après dans le Tick du timer cela pourrait se faire comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            private void timer1_Tick(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (row.Tag == null)
                        continue;
     
                    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
                }
            }
    Voici également le code que j'ai utilisé pour tester (je l'ai mit dans le Form1_Load):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dataGridView1.Rows.Add("ABC", "DEF", "GHI", "JKL");
    dataGridView1.Rows.Add("---", "ERF", "GHI", "JKL");
     
    dataGridView1.Rows[0].Tag = true;
     
    timer1.Start();

  3. #3
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    J'ai fai exactement comme vous m'avez donner mais ca marche pas encore la meme chose seulement la couleur Rouge mais elle clignote pas

    voilà tou ce que j'ai fait

    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
     private void timer1_Tick(object sender, EventArgs e)
            {
     
                foreach (DataGridViewRow row in dataGridViewX1.Rows)
                {
                    if (row.Tag == null)
                        continue;
     
                    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
     
     
                }
     
     
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void FMVoiture_Load(object sender, EventArgs e)
            {
                timer1.Start();
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void btnAfficher_Click(object sender, EventArgs e)
            {
                AfficherVoiture();
                timer1.Start();
            }
    j'ai trouvé une autre methode mais elle me donne pas ce que je veux elle clignote tous les lignes qui ne sont pas en rouge et la ligne en rouge reste en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void timer1_Tick(object sender, EventArgs e)
        {    
            if (dataGridViewX1.RowsDefaultCellStyle.BackColor == Color.Red)
            {
                dataGridViewX1.RowsDefaultCellStyle.BackColor = Color.White;
                return;
            }
            if (dataGridViewX1.RowsDefaultCellStyle.BackColor == Color.White)
            {
                dataGridViewX1.RowsDefaultCellStyle.BackColor = Color.Red;
                return;
            }
         }
    le dernier code clignote mais il me donne le contraire de ce que je veux les lignes blanc clignote vers le rouge et la ligne rouge reste rouge
    aide s'il vous plait

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Avez-vous mit quelque chose dans la propriété Tag pour les lignes que vous voulez faire clignoter ? Sinon cela ne marchera pas.

    P.S.: J'ai testé chez moi avec un timer de 1 seconde. Je ne sais pas si ca fonctionne avec des valeurs trop petites.

    Edit:
    Voici le code complet du Form1:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Drawing;
    using System.IO;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Windows.Forms;
    using System.Xml;
     
    namespace Tests
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                dataGridView1.Rows.Add("ABC", "DEF", "GHI", "JKL");
                dataGridView1.Rows.Add("---", "ERF", "GHI", "JKL");
     
                dataGridView1.Rows[0].Tag = true;
     
                timer1.Start();
            }
     
            private void timer1_Tick(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (row.Tag == null)
                        continue;
     
                    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
                }
            }
        }
    }
    Et les composants placés sont: une DataGridView appellée dataGridView1 et un Timer appellé timer1 avec un Intervall de 1000

  5. #5
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    J'ai essayé votre cas il a marché chez moi aussi
    mais dans mon cas c'est different mais j'ai essayé quand meme de faire un effort
    voilà ce que j'ai fai mais ca reste le meme resultat quesque je doi modifier pour avoir le meme resultat que le simple cas precedent


    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
            private void dataGridViewX1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                try
                {
     
     
                    if (DateTime.Parse(dataGridViewX1.Rows[e.RowIndex].Cells[8].Value.ToString()).AddMonths(-1).Month == DateTime.Now.Month)
                    {
                        e.CellStyle.BackColor = System.Drawing.Color.Red;
                        dataGridViewX1.Rows[e.RowIndex].Tag = true;
                        timer1.Start();
                    }
     
     
     
                }
                catch (Exception) { }
     
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     private void timer1_Tick(object sender, EventArgs e)
            {
     
                foreach (DataGridViewRow row in dataGridViewX1.Rows)
                {
                    if (row.Tag == null)
                        continue;
     
                    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
                }
     
     
            }

  6. #6
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    J'ai essayé aussi comme ca mais la meme chose toujours couleur rouge sans clignotement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     private void btnAfficher_Click(object sender, EventArgs e)
            {
                AfficherVoiture();
                for (int i = 0; i < dataGridViewX1.Rows.Count - 1; i++)
                {
                    if (DateTime.Parse(dataGridViewX1.Rows[i].Cells[8].Value.ToString()).AddMonths(-1).Month == DateTime.Now.Month)
                    {
                        dataGridViewX1.Rows[i].Tag = true;
                        timer1.Start();
                    }
                }

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Je dois avouer que la tel quel je ne vois pas le problème.

    - si vous mettez un point d'arrêt sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
    est ce que Visual Studio s'arrête dessus ?

    - Essayer peut-être en mettant le timer1.Start() en dehors du for car de toute façon il n'a pas besoin d'être appellé plusieurs fois

  8. #8
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    Re,
    j'ai resolu le probleme par la suppression de l'evenement cellFormatting j'ai oublié de le supprimer et ca marché parfaitement mais j'ai un autre probleme je voudrais changer la couleur de clignotement lorsque on a une autre condition j'ai pensé de faire 2 timer mais toujours j'ai le rouge qui clignote pour les deux cas

    voilà tou le code :
    Timer 1 pour le rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void timer1_Tick(object sender, EventArgs e)
            {
     
     
                foreach (DataGridViewRow row in dataGridViewX1.Rows)
                {
                    if (row.Tag == null)
                        continue;
     
                    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
                }
    Timer 2 pour l'autre condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     private void timer2_Tick(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in dataGridViewX1.Rows)
                {
     
                    if (row.Tag == null)
                        continue;
     
                    row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.GreenYellow ? Color.White : Color.GreenYellow;
                }
            }
    le deuxieme cas j'ai fait un start pour timer2
    c'est logique non ?
    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
        private void btnAfficher_Click(object sender, EventArgs e)
            {
                AfficherVoiture();
                for (int i = 0; i < dataGridViewX1.Rows.Count - 1; i++)
                {
                    if (DateTime.Parse(dataGridViewX1.Rows[i].Cells[8].Value.ToString()).AddMonths(-1).Month == DateTime.Now.Month)
                    {
                        dataGridViewX1.Rows[i].Tag = true;
                        timer1.Start();
                    }
                }
                for (int j = 0; j < dataGridViewX1.Rows.Count - 1; j++)
                {
                    if (DateTime.Parse(dataGridViewX1.Rows[j].Cells[5].Value.ToString()).AddMonths(-1).Month == DateTime.Now.Month)
                    {
                        dataGridViewX1.Rows[j].Tag = true;
                        timer2.Start();
                    }
                }
            }
    et pourtant la meme couleur qui clignote

    Aprés ce probleme je vais mettre resolu

  9. #9
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Heureux que vous avez résolu votre problème initial

    Maintenant si vous souhaitez pouvoir différent cas pour les couleurs, il ne faut pas 2 timers mais changer le code de la méthode timer1_Tick

    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
            private void timer1_Tick(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (row.Tag == null)
                        continue;
     
                    switch((int)row.Tag)
                    {
                          case 0:
                              row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Red ? Color.White : Color.Red;
                              break;
                          case 1:
                              row.DefaultCellStyle.BackColor = row.DefaultCellStyle.BackColor == Color.Green ? Color.White : Color.Green;
                              break;
                    }
                }
            }
    et pour choisir quel couleur mettre, il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dataGridView1.Rows[0].Tag = 0; // clignotement rouge
    dataGridView1.Rows[0].Tag = 1; // clignotement vert
    le tout peut être également fait via des énumération pour faciliter la lecture du code par la suite

  10. #10
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    WOOOUUUUHH ... !!
    vous m'avez rendu hyper heureux

    je vous felicite chapeau pour Vous !

  11. #11
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Points : 290
    Points
    290
    Par défaut
    Pas de quoi.

    Bon développement et bonne soirée

  12. #12
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    Merci et a vous aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 21/08/2008, 12h22
  2. Lapack++ et application Windows Forms
    Par li_causi dans le forum Visual C++
    Réponses: 16
    Dernier message: 29/03/2008, 18h59
  3. Réponses: 2
    Dernier message: 27/08/2007, 16h37
  4. Réponses: 1
    Dernier message: 12/01/2007, 21h40
  5. [WinForms]Installation Application Windows Forms
    Par JeanMarieP dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 27/11/2006, 09h13

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