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 :

ListViewItem.BackColor : une explication?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut ListViewItem.BackColor : une explication?
    Bonjour,

    Ayant effectué une recherche sur le sujet, je suis tombé sur un post de moi-même datant d'il y a qques mois. Il était resté sans réponse.

    Le souci est simplissime : je remplis mon ListView d'objets ListViewItem ayant leur propriété BackColor affectée à Color.Red, Yellow ou LimeGreen, peu importe. J'en sélectionne un, puis le désélectionne en cliquant sur le bas de la liste (du vide, quoi). Le fond de l'item qui était sélectionné à l'instant devient blanc, au lieu de récupérer la valeur de son BackColor.

    Une idée de solution? Merci d'avance pour vos réponses.

    Pour info, je travaille avec le Framework 1.1.

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    A vue de nez, le BackColor d'un item que tu surcharges est modifié quand tu le sélectionne, puisque la couleur passe à "SelectionBackground" (bleu, par défaut). Quand l'objet est désélectionné, il revient à la couleur standard des éléments non sélectionnés, qui n'est pas la tienne (mais blanc, par défaut).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Tout d'abord, merci de ta réponse. Mais non, en fait

    Si le SelectedItem passe à null, le dernier sélectionné devient blanc. Mais si je change de ligne (SelectedItem = item suivant, par exemple), le problème ne se pose pas. C'est seulement quand il n'y aucun item de sélectionné que le dernier sélectionné devient blanc.

    Deuxième chose : je n'ai rien surchargé, j'ai simplement affecté la propriété BackColor lors de la création du ListViewItem. Et BackColor est bien la propriété utilisée pour afficher le fond des éléments non sélectionnés.

    Encore une fois, merci d'avoir pris le temps de répondre

    PS : si je poste ce problème c'est parce qu'à mon sens, il s'agit d'un bug. J'aimerais savoir si ce comportement se reproduit chez vous ou non, histoire d'en avoir le coeur net ...

  4. #4
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    C'est normal car ton item est toujours selectionné.
    Apparement, lorsque le fond de couleur n'est pas blanc, il apparait en blanc, sinon en gris.

    Pour résoudre ton problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonListView.HideSelection = True

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    Bonjour Kelpan !

    Alors c'est une solution que je n'avais même pas essayé. De ce que je comprends de HideSelection (suffit de lire en même temps ), il s'agit de griser (ou blanchir apparemment) l'item sélectionné lorsque le ListView perd le focus.

    Or, quand je clique en dessous de la liste de mes items (mais sur le ListView), deux choses :
    - le SelectedItem passe à null (sûr et certain)
    - je ne pense pas que le ListView perde le focus (à vérifier)
    donc à priori aucune chance pour que ça fonctionne.

    Et pourtant, c'est bien le cas ! Donc déjà, merci beaucoup pour l'idée Et deuxièmement, il me semble donc que HideSelection soit quelque peu buggé ou du moins mal décrit : il n'est pas censé entrer en ligne de compte lorsqu'il n'y aucun item "courant".

    Mais c'est peut-être aussi une mauvaise compréhension de ma part ... Dans tous les cas, encore merci !

    PS : si quelqu'un peut m'expliquer le pourquoi du comment en bonus, je suis pas contre

  6. #6
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    En effet, je viens de tester et je constate aussi qu'il y a comme un petit soucis avec HideSelection...

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

Discussions similaires

  1. Plantage de programme : avez-vous une explication ?
    Par tlpwd dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/01/2007, 14h10
  2. Une explication nécessaire : 16 bits, 32 bits, etc.
    Par einegel dans le forum Delphi
    Réponses: 10
    Dernier message: 29/01/2007, 19h46
  3. Une explication simple de Dijkstra ..
    Par pierre1256 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 03/01/2007, 09h35
  4. [C#] ViewState. Enfin une explication simple ?
    Par slopera dans le forum ASP.NET
    Réponses: 23
    Dernier message: 27/01/2006, 16h34
  5. Réponses: 28
    Dernier message: 18/08/2003, 11h54

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