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 :

[C#]Virtual ListView (CLR 2.0) - problème MouseOver


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [C#]Virtual ListView (CLR 2.0) - problème MouseOver
    Bonjour,

    J'utilise la nouvelle version du listview (.net framework 2.0). J'ai décidé d'utiliser ce control en mode virtuel (à cause de la grande quantité d'éléments contenus) et j'ai donner la valeur true à la propriété ownerdraw (pour avoir un plus grand controle sur l'apparence des éléments dessinés).

    Les éléments (items) et sous éléments (sub items) sont correctement affichés tant que je ne bouge pas ma souris au dessus des sous éléments. Dès que je bouge ma souris au dessus des sous éléments, le contenu (une string) disparait. A première vue, ca ressemble à un problème d'invalidation des sous éléments qui se fait mal dans le cas d'un évênement "mouse over".

    J'ai placé un breakpoint dans la fonction qui dessine les sous éléments mais je ne rentre éffectivement jamais dedans quand j'agite ma souris au dessus du contenu de la liste.

    Voici les fonctions que j'ai utilisées:

    protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e)
    protected override void OnDrawItem(DrawListViewItemEventArgs e)
    protected override void OnDrawSubItem(DrawListViewSubItemEventArgs e)
    protected override void OnRetrieveVirtualItem(RetrieveVirtualItemEventArgs e)


    Dans mon constructeur, voici les propriétés que j'ai initialisées:

    SetStyle(ControlStyles.DoubleBuffer, true);
    this.OwnerDraw = true;
    this.VirtualMode = true;
    this.DoubleBuffered = true;

    Ca parrait presque incroyable mais je me demande si il n'y a pas un bug dans la version 2.0 du listview. J'apprécierais énormément si quelqu'un pouvait m'éclairer sur ce sujet.

    J'ai attaché un projet simple avec un exemple concret à ce "post".

    Merci pour votre aide,
    Fred
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Je viens de regarder ton projet, en effect il y a quelque chose de bizarre.
    Cepedendant j'ai trouvé la procédure qui génère ce comportement.

    J'ai mis en commentaire les lignes suivantes, et le problème semble résolu, les ous items ne disparaissent plus, et si la ligne est selectionnée alors le fond est en bleu

    j'espere t'avoir aidé

    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
     
    protected override void OnDrawItem(DrawListViewItemEventArgs e)
            {
     
               //e.DrawBackground();
               //e.DrawFocusRectangle();
     
                if ((e.State & ListViewItemStates.Selected) != 0)
                {
                    // Draw the background and focus rectangle for a selected item.
                    e.Graphics.FillRectangle(Brushes.Blue, e.Bounds);
                    e.DrawFocusRectangle();
                }
                else
                {
                    // Draw the background for an unselected item.
                    //e.Graphics.FillRectangle(Brushes.White, e.Bounds);
                }
     
                // Draw the item text for views other than the Details view.
                if (this.View != View.Details)
                {
                    e.DrawText();
                }
     
            }

  3. #3
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Merci
    Un grand merci !

    FdB

Discussions similaires

  1. listview, selectedvalue, mvvm et problèmes
    Par Melianos dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/02/2011, 10h34
  2. Réponses: 7
    Dernier message: 12/03/2010, 22h50
  3. [ListView] Comment résoudre un problème de Binding/Multibinding rafraichissement ?
    Par Lookoum dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 26/09/2008, 09h27
  4. Problème avec Virtual Treeview
    Par bisounoursbleu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/12/2004, 15h37
  5. [C#] Problème avec ListView
    Par yannick dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2004, 17h29

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