Listviewex

Soyez le premier à donner votre avis sur cette source.

Vue 11 462 fois - Téléchargée 1 618 fois


Description

Je souhaitais une ListView plus agréable graphiquement et offrant quelques fonctions supplémentaires. Après de longues heures de recherche, je me suis décidé à prendre le meilleur de ce que je pouvait trouver sur le net.
Les codes trouvés ici et là (VB.Net ou C#) ont nécessité pas mal d'adaptation pour être imbriqués ensemble mais pour chaque partie de code j'ai mentionné le lien de la source originale. Si pas de lien, alors le code est de moi.

Voici options ajoutées :
- Gestion des Group
- Possibilité de masquer automatiquement la colonne qui sert au groupement des Item
- Possibilité d'agrandir automatiquement une colonne (ou toutes) en remplacement de la colonne masquée
- Image de fond avec gestion de la transparence
- Tri sur clic d'une en-tête de colonne
- Affichage d'une icone sur l'en-tête de colonne en fonction du sens de tri (de/croissant)
- Impression et Apperçu avant impression de la ListView (+ gestion des propriétés d'impression)
- Gestion du double-clic lorsque la LV est en mode CheckBox
- Mode ExViewMode pour le côté graphique des item (voir capture) (incompatible avec le mode CheckBox)

Conclusion :


Merci aux auteurs des sources suivantes :

http://www.vbfrance.com/codes/EXLISTVIEW-LISTVIEW-PERSONNALISE_50069.aspx
http://www.csharpfr.com/codes/ROUNDEDRECTANGLE-CREEZ-RECTANGLES-AVEC-COINS-ARRONDIS_35392.aspx
http://www.codeproject.com/KB/list/PrintableListView.aspx
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=7394&lngWId=10
http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=5234&lngWId=10
http://www.thebitguru.com/articles/16-How%20to%20Set%20ListView%20Column%20Header%20Sort%20Icons%20in%20C

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jaknight007
Messages postés
17
Date d'inscription
mardi 8 mars 2005
Statut
Membre
Dernière intervention
16 août 2014
-
Très intéressante ta listview ! Je l'essaie avec grand plaisir
BadoqueAlex
Messages postés
129
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2009
-
Bien. Un meilleur exemple aurait été de reprendre le style graphique de Vista ou du MediaPlayer pour ton CS. 7/10
PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Bonjour,

A première vue, cette listview me semble très bien !

Et je crois que je vais maintenant l'utiliser pour mes futures appli.

J'ai rajouté 1 bouton pour ajouter 1 item à la LV afin de vérifier le nombre de pages pour l'impression, c'est tout bon ! (par contre, bizarrement, je ne sais pas encore pourquoi, je n'ai pas poussé la recherche, mais la ligne ajoutée était vide, j'ai donc utilisé ta méthode, j'en profite pour mettre le code à la fin de ce commentaire)

J'ai par contre constaté 1 bug que je connaissais, je n'avais pas vérifié si ce bug était corrigé depuis, mais il semble que non, bug constaté la 1ère fois il y a quelques années en VB .Net 2003, qui semble bizarrement toujours d'actualité avec VB .Net 2008 Express : aperçu, on voit des marges d'environ 2.5 cm, mise en page, ca affiche 10 (mm) mais il s'agit en fait de l'affichage de 10 dixième de pouce, soit 1 pouce, soit 2.54 cm, ce qui semble correspondre à la marge constatée visuellement, si on valide, les 10 (mm) sont enregistrées, aperçu, la marge est réduite à priori à 1 cm (donc les 10 mm semblent ok), re mise en page, et le nombre a encore été divisé par 2.54 ! et ainsi de suite... (j'espère m'être fait comprendre)

Bonne prog !
++

Private Sub Button_Ajoute_1_item_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Ajoute_1_item.Click
'Dim lvi As New ListViewItem(LV.Items.Count)
'lvi.SubItems.Add(LV.Items.Count)
'LV.Items.Add(lvi)
Dim MyItem As ListViewItem
MyItem = New ListViewItem(New String() {"DMB GS.mp3", "Dave Matthews Band", "Grey Street", "Busted Stuff"}, 0)
With LV
.Items.Add(MyItem)
End With
End Sub
bouv
Messages postés
1429
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Pour la méthode d'ajout des items, je vois d'où viens le problème. Il faut impérativement spécifier la propriété ImageIndex.
Essai le code suivant :

Dim lvi As New ListViewItem(LV.Items.Count)
lvi.SubItems.Add(LV.Items.Count)
lvi.ImageIndex = 0
LV.Items.Add(lvi)

Je tenterai de corriger ça prochainement.

Par contre j'ai pas tout pigé au deuxième problème.
PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Merci Bouv,

Ca fonctionne en ajoutant ImageIndex. (la mise à jour de ton code pour ne pas rendre obligatoire cette option m'intéresse, mais rien est pressé !)

Je vais essayer d'être plus explicite pour le 2e problème (il est vrai que j'étais légèrement brouillon)

1) Imprime
2) Mesure la marge haut (2,54 cm = 1 pouce)
3) Mise en page
4) Valider (10 mm)
5) Imprime
6) Mesure la marge haut (1 cm : la marge est 2.54 fois plus petite)
7) Mise en page
8) Valider (3.9 mm)
9) Imprime
10) Mesure la marge haut (la marge est 2.54 fois plus petite)
11) Mise en page
12) Valider (1.5 mm)
et ainsi de suite...

Conclusions :
Après validation de la mise en page sur 1 certaine taille, la page est correctement imprimée à la bonne taille.
Cependant, lors de l'affichage des valeurs de mise en page, les valeurs sont erronées et sont 2.54 fois trop petite.
Quand on affiche les valeurs, elles sont exprimées en dixièmes de pouce.
Quand on valide les valeurs, elles sont exprimées en millimètres.

Conséquence :
Si l'on configure la mise en page et que l'on valide sans modifier aucune valeur, les valeurs sont divisées par 2.54 (pour rappel, 1 pouce = 2.54 cm)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.