Vb.Net Changer la couleur de la Gridline de la Listview

Résolu
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
- 15 oct. 2016 à 14:55
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
- 15 oct. 2016 à 21:38
Bonjour,
je faisais des recherche sur comment modifier l'apparence de listview, j'ai trouvé le poste de karin.code sur comment modifier l'entête de la listview)
je voulais aussi modifier la couleur de Gridlines, le seul sujet que j'ai pu trouver et qui marche bien est dans :
http://vb-net123.blogspot.com/2012/11/change-listview-gridlines-color.html
j'ai remarqué que dans la propriété de la listview du projet télécharger de se site il y a une fonction en plus (UseDefautGridlines = True/Fause), cette fonction n'existe pas normalement dans la listview et aussi je ne peut pas copier cette listview dans une nouveau projet même chose pour le code il y a des erreur qui š'affiché
esque il y a des manipulations à faire pour ajouter la foction UseDefautGridlines à la listview
Merci d'avance pour votre future aide

1 réponse

vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
Modifié par vb95 le 15/10/2016 à 17:24
Bonjour kikou73
Je suppose que cette nouvelle listview est un contrôle utilisateur qui utilise les propriétés de base de la listview de visual Studio et on y rajoute d'autres propriétés et méthodes !
J'ai voulu ouvrir la page de téléchargement du projet et j'ai eu de mauvaises surprises ( un soit-disant virus sur mon Pc)
Après vérification cela s'avère faux !
Je n'irai pas plus loin dans ce sujet car ad-fly ne me semble pas être un site sûr

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1
Modifié par kikou93 le 15/10/2016 à 17:48
Bonjour vb95,

c'est vrai, quand je clique sur Télécharger une page hors sujet s'ouvre, mais j'ai finalement pu le télécharger et je l'ai scanné avec un antivirus
j'ai met le projet dans ce lien :
http://www.cjoint.com/c/FJppH2Slm5J
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151 > kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

Modifié par vb95 le 15/10/2016 à 18:12
salut kikou73
C'est bien ce que je pensais
voici le code du début de la classe ListviewEx

'Original Source : http://www.vbforums.com/showthread.php?526044-2005-ListView-Gridlines-color
'Original
Coded by : kleinma, Moderator.NET

Public Class ListViewEx
Inherits System.Windows.Forms.ListView


La première ligne est la Class ListviewEx
La seconde ligne indique que cette classe hérite des propriétés, méthodes et évènements de la ListView telle que nous la connaissons
Le code ensuite définit les nouvelles propriétés, méthodes et évènements utilisables avec cette nouvelle listview

Dans l'explorateur de projet Form1 est la form et ListviewEx.vb est le contrôle utilisateur
Je n'ai jamais utilisé ceci dans aucun projet et te renvoie aux moteurs de recherche pour trouver des infos sur les contrôles utilisateurs en VB Net .
A moins qu'une personne du site plus aguerri que moi dans ce domaine ne vienne t'apporter ses lumières .
Bonne fin de weekend
0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1 > vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022

15 oct. 2016 à 18:23
Salut vb95
Merci pour ton aide, je vais essayer de faire plus de recherche
Bonne fin de weekend a toi aussi
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151 > kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018

15 oct. 2016 à 18:26
regarde ici pour les bases des contrôles utilisateur
http://plasserre.developpez.com/cours/vb-net/?page=poo1#LXV-C-2
0
kikou93
Messages postés
417
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
24 septembre 2018
1 > vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022

15 oct. 2016 à 20:32
Salut vb95
le lien que tu m'a donnée été vraiment très utile
Aprés avoir ajouté le Class Listview.vb qui se trouve dans le projet précédent http://www.cjoint.com/c/FJppH2Slm5J
clique sur Déboguer -> Générer (Nom du projet), pour générer l'outil ListviewEx dans la liste des outils
Maintenant il suffit de le saisir et de le déplacer dans un des formulaires
on ajoute un bouton et une textbox
copier le code suivant dans Public Class Form1
Dim i As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If i = 0 Then
ListViewEx1.Columns.Add("Valeur " & 0, 0, HorizontalAlignment.Center)
ListViewEx1.Items.Add("")

ListViewEx1.Columns.Add("Valeur " & 1, 100, HorizontalAlignment.Center)
ListViewEx1.Items(0).SubItems.Add(TextBox1.Text)
ListViewEx1.Width = ListViewEx1.Width + 5
ElseIf i > 0 Then
ListViewEx1.Width = ListViewEx1.Width + 100
ListViewEx1.Columns.Add("Valeur " & i + 1, 100, HorizontalAlignment.Center)
ListViewEx1.Items(0).SubItems.Add(TextBox1.Text)
End If
TextBox1.Clear()
TextBox1.Focus()
i = i + 1
ListViewEx1.OwnerDraw = True
End Sub
Private Sub ListViewEx1_DrawColumnHeader(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs) Handles ListViewEx1.DrawColumnHeader
Try
Dim RectPoints As New Point(e.Bounds.X, e.Bounds.Y)
Dim RectSizes As New Size(New Point(e.Bounds.Width + 20, e.Bounds.Height))
Dim Rects As New Rectangle(RectPoints, RectSizes)
e.Graphics.FillRectangle(Brushes.Black, Rects) 'couleur contour
Dim RectPoint As New Point(e.Bounds.X + 1, e.Bounds.Y + 1)
Dim RectSize As New Size(New Point(e.Bounds.Width - 1, e.Bounds.Height - 1))
Dim Rect As New Rectangle(RectPoint, RectSize)
e.Graphics.FillRectangle(New SolidBrush(SystemColors.WindowFrame), Rect) 'couleur fond BackColor
Finally
End Try
If CInt(e.ColumnIndex.ToString) = 0 Then
ElseIf CInt(e.ColumnIndex.ToString) > 0 Then
e.Graphics.DrawString("Valeur " & e.ColumnIndex.ToString, New Font("Georgia", 12, FontStyle.Bold), Brushes.Red, e.Bounds.X + 10, e.Bounds.Y + 3)
End If
End Sub
Private Sub ListViewEx1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawListViewItemEventArgs) Handles ListViewEx1.DrawItem
e.DrawDefault = False
End Sub
Private Sub ListViewEx1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListViewEx1.ColumnWidthChanging
e.Cancel = True
e.NewWidth = DirectCast(sender, ListViewEx).Columns(e.ColumnIndex).Width
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListViewEx1.View = View.Details
ListViewEx1.GridLines = True
ListViewEx1.GridLineColor = Color.Black
ListViewEx1.UseDefaultGridLines = False
ListViewEx1.Scrollable = False
TextBox1.Focus()
End Sub


On peut dire que ce code est une suite de celui de Karin.code
il y a une chose a modifier dans ListviewEx.vb
dans cette partie :
 Protected Overrides Sub OnDrawColumnHeader(ByVal e As System.Windows.Forms.DrawListViewColumnHeaderEventArgs)
e.DrawDefault = False
MyBase.OnDrawColumnHeader(e)
End Sub

modifier e.DrawDefault = True par ça e.DrawDefault = False

Merci vb95 pour ton aide précieuse
0