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

VB.NET Discussion :

colorer les colonnes de ma listview


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut colorer les colonnes de ma listview
    Salut,
    j'ai une listeview contenant plusieurs colonnes, j'aimerais colorer quelques une.

    comment ça se fait?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    voir ici

  3. #3
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    Merci, j'ai déja consulter ce lien et j'ai testé ce code, mais ça ne colorie rien.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Poutant il fonctionne.
    Tu peux même facilement l'adapter pour coloriser chaque cellule d'une colonne en alternance pour une meilleure visibilité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Sub ColoriseAlterne()
            Dim LignePaire As Boolean = False
            Dim lvi As ListViewItem
            For Each lvi In Me.ListView1.Items
                lvi.UseItemStyleForSubItems = False
                If LignePaire Then lvi.SubItems(0).BackColor = Color.Cyan Else lvi.SubItems(0).BackColor = Color.LightGreen
                LignePaire = Not LignePaire
            Next
        End Sub
    Après, pour pouvoir t'aider, il nous faudrait plus d'info.
    As-tu un message d'erreur ? As-tu suivi en pas à pas ?
    Montre nous le code que tu utilises.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    merci

    je fais comme ça:

    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
     
     
            liste_livraisons.View = View.Details
            liste_livraisons.Columns.Add("N° d'expedition", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Date d'expedition", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Bureau douanier", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° dossier AP", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Montant livraison AP", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° facture Frs", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Nombre de colis", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Poids", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° dossier", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Type", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Montant livraison ", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° facture Frs", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Nombre de colis", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Poids", 120, HorizontalAlignment.Left)
     
            Dim LignePaire As Boolean = False
            Dim lvi As ListViewItem
            For Each lvi In liste_livraisons.Items
                lvi.UseItemStyleForSubItems = False
                If LignePaire Then lvi.SubItems(0).BackColor = Color.Cyan Else lvi.SubItems(0).BackColor = Color.LightGreen
                LignePaire = Not LignePaire
            Next
    au niveau du chargement de l'interface.

    mais aucune colonne n'est coloriée

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Là, c'est normal puisque le code permet de colorer une cellule des lignes de données de la Listview.

    Donc tu souhaites colorer les entêtes de colonnes. C'est çà ?
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Pour les subitems tu peux faire comme dit par rv261..

    Pour les headers ,il faut prendre soi meme la customization par le biais de l'event DrawColumnHeader comme ceci:

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            liste_livraisons.OwnerDraw = True
            liste_livraisons.View = View.Details
            liste_livraisons.Columns.Add("N° d'expedition", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Date d'expedition", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Bureau douanier", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° dossier AP", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Montant livraison AP", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° facture Frs", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Nombre de colis", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Poids", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° dossier", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Type", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Montant livraison ", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("N° facture Frs", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Nombre de colis", 120, HorizontalAlignment.Left)
            liste_livraisons.Columns.Add("Poids", 120, HorizontalAlignment.Left)
     
     
        End Sub
     
     
     
        Private Sub liste_livraisons_DrawColumnHeader(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs) Handles liste_livraisons.DrawColumnHeader
            Dim sf As New StringFormat()
            Try
     
                ' Store the column text alignment, letting it default
                ' to Left if it has not been set to Center or Right.
                Select Case e.Header.TextAlign
                    Case HorizontalAlignment.Center
                        sf.Alignment = StringAlignment.Center
                    Case HorizontalAlignment.Right
                        sf.Alignment = StringAlignment.Far
                End Select
     
                ' Draw the standard header background.
                ' comment this : e.DrawBackground()
                Dim brushBounds As SolidBrush
                Select Case e.ColumnIndex
                    Case 0, 1
                        brushBounds = New SolidBrush(Color.Aquamarine)
                    Case 2, 3
                        brushBounds = New SolidBrush(Color.LightPink)
                    Case 4, 5
                        brushBounds = New SolidBrush(Color.BlanchedAlmond)
                    Case Else
                        brushBounds = New SolidBrush(Color.Yellow)
                End Select
     
                e.Graphics.FillRectangle(brushBounds, e.Bounds)
                ' Draw the header text.
                Dim headerFont As New Font("Helvetica", 10, FontStyle.Bold)
                Try
                    e.Graphics.DrawString(e.Header.Text, headerFont, _
                        Brushes.Red, e.Bounds, sf)
                Finally
                    headerFont.Dispose()
                    brushBounds.Dispose()
                End Try
     
            Finally
                sf.Dispose()
            End Try
     
        End Sub
    End Class
    De meme pour customizer le dessin pour les events subsequents
    drawitem,drawsubitem.....
    bon code....

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Pour que la solution proposé par "MABROUKI" fonctionne, places la propriété "OwnerDraw" de ton ListView à True.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  9. #9
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    MERCI beaucoup,

    mais j'aimerais colorer des cellules, ou des colonnes, par exemple N° d'expedition avec une couleur pour les distinguer...

  10. #10
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    j'ai essayé mais j'arrive seulement à colorier le contenu non les colonnes ayant les memes valeurs?
    et ou' je dois mettre le code, au niveau du load de la page ? pendant l'ajout.?

Discussions similaires

  1. Trier les colonnes d'une ListView
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 19h26
  2. Remplir les colonnes d'une listview
    Par Mathew77 dans le forum Windows Forms
    Réponses: 22
    Dernier message: 18/06/2009, 12h33
  3. Réponses: 4
    Dernier message: 31/05/2008, 09h44
  4. Redimensionner les colonnes d'une listview
    Par Gaetch dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/07/2007, 10h36
  5. [VBA] Trier les colonnes d'une listview
    Par alncool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/09/2005, 14h12

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