2009-04-28 9 views
0

J'essaye de dessiner manuellement ListViewItems sur un UserControl personnalisé. Le contrôle lui-même est un wrapper autour d'un ListView stocké en tant que membre privé sur la classe.Dessin ListViewItem dépasser VisibleClipBounds

DrawListViewItemEventHandler est attaché pour permettre le dessin manuel de ces éléments, et cela semble fonctionner dans la plupart des cas. Le problème que j'ai est où le texte pour le ListViewItem (en mode image grand) est long.

Je dessine un rectangle de délimitation autour de ListViewItem avec divers thèmes, puis je mesure la taille du texte à l'aide de Graphics.MeasureString() et dessine manuellement le texte. Cependant ce que je trouve est que le dessin vertical est recadré à 2.5 lignes de texte, parce que la légende tombe en dehors des VisibleClipBounds du contexte graphique que j'ai été passé.

Cela semble un peu étrange, mais je ne sais pas pourquoi une telle chose devrait arriver et je ne sais pas comment contourner le problème.

+1

Quel comportement est étrange? –

+0

Je suis d'accord avec Adam. Cela me semble juste. Qu'est-ce que tu veux que ça arrive? –

+0

Eh bien, je m'attendrais à ce que ListViewItem puisse dessiner tout son texte (du moins lorsqu'il est sélectionné, ce qui est à ce stade) ... ayant essentiellement des limites de clip assez grandes pour se dessiner dans son intégralité. – Ian

Répondre

0

Vous pouvez utiliser Tile view et TileSize pour vous donner suffisamment d'espace pour dessiner votre texte.

Le ListView ne peut pas garantir de dessiner tout son texte: le texte pourrait être énorme.