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

C# Discussion :

ListView : couleur de fond seulement sur le texte pour la première ligne


Sujet :

C#

  1. #1
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 109
    Points : 2 210
    Points
    2 210
    Par défaut ListView : couleur de fond seulement sur le texte pour la première ligne
    Bonjour tout le monde,

    Faute de pouvoir facilement mettre une couleur de fond sur la ligne d'entêtes de colonnes d'un ListView (ça peut se faire, je crois que j'ai vu ça sur CodeProject, mais c'est quand même du sport), j'ai coloré les articles en dessous.

    Or, voilà ce qui se passe : sur la ligne du premier enregistrement, dans la première colonne la couleur de fond s'arrête à la fin du texte. Et elle reprend à la colonne suivante. Entre les deux, le fond est blanc.

    Le problème ne se pose pas sur les lignes suivantes.

    Il doit y avoir une explication, un peu comme, sur certains périphériques, une couleur de fond est initialisée jusqu'à la fin de la ligne, et si on veut l'arrêter avant il faut le préciser.

    Est-ce qu'il y a d'autres astuces à connaître pour la mise en forme des ListView ?
    Je ne me suis pas lancé dans le OwnerDraw, on verra peut-être plus tard.

    Pour le moment j'ai obtenu quelque chose de plus homogène en mettant la même couleur de fond pour la ListView que pour les éléments qui sont dedans. Seul défaut, ça met la même couleur en bordure du ListView, au-dessus de la ligne d'entêtes de colonnes qui elle est blanche.

    Ensuite, je me suis rendu compte que du coup ce n'est pas la peine de donner une couleur de fond aux éléments, puisqu'elle est déjà donnée par le contrôle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    			foreach(window w in windows)
                            {
    				ListViewItem lvi = new ListViewItem(w.handle.ToString());
                                    lvi.SubItems.Add((++i).ToString("0  "));
                                    lvi.SubItems.Add(GetTitre(w.handle));
    				lvi.BackColor = Color.Yellow;
                                    F4.listView1.Items.Add(lvi);
                            }

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Regarde du côté de cette propriété du listviewitem :
    https://learn.microsoft.com/fr-fr/do...yleforsubitems

    Bon codage++

  3. #3
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 109
    Points : 2 210
    Points
    2 210
    Par défaut
    Bonjour,

    J'ai voulu colorier la deuxième colonne, et ça a été comme si je flutais.
    Je me suis dit qu'il fallait activer OwnerDraw, mais maintenant que tu en parles, je me demande si UseItemStyleForSubItems ne serait pas dans le sujet.

    Bon mais alors ça, il faut aller le chercher dans l'Intellisense, car dans l'interface visuelle de développement, comme propriétés de ListView qui commence par un U, je ne vois que UseWaitCursor, qui n'a clairement pas le même usage.
    Du moins, dans la fenêtre des propriétés, c'est les propriétés de la ListView que j'ai, sachant que le contenu est renseigné par code.

    UseItemStyleForSubItems pour chaque ListViewItem est à true.
    D'ailleurs là les propriétés sont lisibles, alors que pour ListView, l'infobulle est minuscule, ça ça va quand on a 30 ans, mais après 60 c'est une autre paire de manches.
    Je n'ai pas trouvé UseItemStyleForSubItems pour ListView.

    J'ai comme le vague pressentiment que si je veux insister à avoir la deuxième colonne dans une couleur différente, il va falloir y passer du temps.

    Et que pour éviter ce problème sur la première ligne, l'autre solution était d'ajouter des espaces à la fin des textes de la première colonne, et ne l'élargir qu'à concurrence de la largeur obtenue.

  4. #4
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 109
    Points : 2 210
    Points
    2 210
    Par défaut
    Je suis en cours de réveil

    C'est vrai qu'en mettant UseItemStyleForSubItems à false pour chaque ListViewItem le problème ne se posait pas, puisque la première colonne restait blanche.

    Donc, j'ai fait des gros détours, mais ta réponse est la bonne.
    Problème résolu, merci.

Discussions similaires

  1. listview + couleur de fond
    Par cortex59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2008, 16h23
  2. Réponses: 2
    Dernier message: 21/02/2007, 11h16
  3. Réponses: 3
    Dernier message: 01/06/2006, 09h49
  4. Changer la couleur de fond d'un champ "text"
    Par nic211 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/02/2005, 13h50
  5. Réponses: 4
    Dernier message: 23/06/2004, 14h30

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