2009-05-17 6 views
2

J'essaie d'afficher une vignette dans une liste déroulante dans une application Windows Form. J'ai lu et vu toutes sortes de suggestions, mais je cherche le plus simple. Voici les détails de ce que j'essaie de faire. J'essaie d'afficher une vignette d'une image et un texte d'affichage à côté de celui-ci.Vignette d'image dans une liste déroulante WinForms

J'ai regardé ListViews et ils ne semblent pas offrir ce que je cherche. Tout code serait apprécié.

Répondre

2

définir votre zone de liste à OwnerDraw

puis en cas itemdraw (ou est-ce DrawItem?) Saisir votre image et dessiner dans l'espace alloué (e.Graphics.DrawImage), puis dessinez le test de l'élément à côté (e.Graphics.DrawString)

+1

Ceci est la bonne approche, mais vous devrez également gérer le dessin de l'élément quand il est dans divers états (sélectionné, en surbrillance, etc.) – NascarEd

+0

Merci, Ed, pour la détail supplémentaire. Très utile. –

+0

Si vous voulez que ce soit réutilisable, vous devrez également gérer le redimensionnement de l'image, en recadrant, en comprimant ou en étirant l'image à la bonne taille. Vous pouvez également modifier la taille d'un élément pour l'adapter à l'image. Je vous suggère de remplacer la classe ListBox et d'ajouter ceci avec des propriétés pour personnaliser le comportement requis. – sprite

1

Attribuer une liste d'images à la zone de liste et définissez la propriété Vue sur: Liste ou carreaux, maintenant chaque élément choisir l'image de la liste doit être affichée. Regarde exactement comme ListBox avec des images pour moi;)

+0

Ce serait un ListView plutôt qu'un ListBox. –

+0

le principe est là mais Tim a raison ... le ListView va le faire – War

Questions connexes