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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    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 éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    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 très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    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 éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    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 très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    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 très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    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();
                    }
                }

+ 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