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 :

Problème de rafraichissement de dessin avec _CellPainting() : bugs d'affichage


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut Problème de rafraichissement de dessin avec _CellPainting() : bugs d'affichage
    Voila suite à ce post :
    http://www.developpez.net/forums/sho...d.php?t=503613
    j'ai réussi à avancer.
    Pour résumer, je veux afficher un icone dans le header des colonnes sur lequel je clique.(pour un datagridview).

    Pour cela j'utilise CellPainting, mais j'ai un souci.
    Si aucune fenetre ne vient par dessus celle de mon application ou si les en tetes de colonnes sont redimensionnées tout marche a peu pres correctement et ça me donne le jpg ok en piece jointe.
    Et sinon si les cellules des en tete de colonnes sont redimensionnées ou si une fenetre passe par dessus la mienne tout par en vrac (plus de texte, le backcolor est changé,etc) : pasOK en fichier attaché.

    VOici mon code :
    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
     
            private void liste_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
            {
      //TableauHeadersClicked est un tableau de booléens pour savoir le statut des headers, si cliqué ou pas
    //ex : TableauHeadersClicked[0]=true : la 1ere colonne à été cliquée
    //je vérifie de plus si la cellule dessinée actuellement est bien un header de colonne.
                if ((e.RowIndex == -1) && (e.ColumnIndex >= 0) && (TableauHeadersClicked[e.ColumnIndex]))
                {
                        try
                        {
                            Icon ico = Properties.Resources.Flechebas;
                            Rectangle rctg = new Rectangle();
                            rctg.X = e.CellBounds.X + 7;
                            rctg.Y = e.CellBounds.Y + 2;
                            rctg.Size = ico.Size;
                            e.Graphics.DrawIcon(ico, rctg);
                            e.Handled = true;
                        }
                        catch (Exception ex) { MessageBox.Show(ex.ToString()); }
     
                }
                else { e.Handled = false; }
     
     
            }
    Images attachées Images attachées   

  2. #2
    AP
    AP est déconnecté
    Membre confirmé
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Points : 538
    Points
    538
    Par défaut
    C'est normal, ton image sort de ta cellule. lorsque la cellule du dessous se redessine, elle écrase ton image.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    Et comment je fais pour ça se passe bien et que tout s'affiche correctement ?
    Et comment redimensiuon ma cellule pour qu'elle prenne en compte la taille de l'icone ? (si l'icone est plus haute par exemple ?)
    Merci !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    J'ai rajouté cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.Paint(e.CellBounds, DataGridViewPaintParts.All & ~DataGridViewPaintParts.ContentForeground);
    avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                            e.Graphics.DrawIcon(ico, rctg);
                            e.Handled = true;
                        }
    Ca marche...Mais je ne comprend pas pourquoi !!?

    Par contre je voudrais conserver le texte de l'intitulé de la colonne qui s'efface a profit de l'icone...?

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/07/2011, 11h48
  2. [AJAX] Rafraichissement de tableau avec ajax
    Par Lini62 dans le forum AJAX
    Réponses: 5
    Dernier message: 19/10/2010, 18h21
  3. Réponses: 16
    Dernier message: 18/03/2007, 14h30
  4. Réponses: 7
    Dernier message: 04/06/2006, 18h00
  5. Problème avec JFileChooser (BUG ?)
    Par vano dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/05/2006, 10h03

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