Listbox et scrollbar

Le
d
Bonjour à tous,

Pour mettre des lignes de différentes couleurs dans une listbox,
j'utilise listBox.DrawMode = DrawMode.OwnerDrawVariable;
et l'événement DrawItem;
Le problème est que lorsque j'utilise cette propriété
(OwnerDrawVariable), le scrollbar horizontal n'apparaît plus.

Y a-t-il un moyen de le faire réapparaître?

Merci pour tout.

David L
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
d
Le #12145761
J'ai trouvé

"" news:g2lan1$pld$
Bonjour à tous,

Pour mettre des lignes de différentes couleurs dans une listbox,
j'utilise listBox.DrawMode = DrawMode.OwnerDrawVariable;
et l'événement DrawItem;
Le problème est que lorsque j'utilise cette propriété
(OwnerDrawVariable), le scrollbar horizontal n'apparaît plus.

Y a-t-il un moyen de le faire réapparaître?

Merci pour tout.

David L




Jean-Luc M.
Le #12145751
a émis l'idée suivante :
J'ai trouvé




C'est super ... mais il aurait été bien plus intéressant que tu donnes
la solution pour ceux qui pourraient un jour avoir le meme probleme.

--
Jean-Luc M.
d
Le #12145661
Suite à ce message, voici la solution:
Bonjour à tous,

Pour mettre des lignes de différentes couleurs dans une listbox,
j'utilise listBox.DrawMode = DrawMode.OwnerDrawVariable;
et l'événement DrawItem;
Le problème est que lorsque j'utilise cette propriété
(OwnerDrawVariable), le scrollbar horizontal n'apparaît plus.

Y a-t-il un moyen de le faire réapparaître?

Merci pour tout.

David L

Solution:

En plus, il faut ajouter l'événement MeasureItem.

private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
ListBox listBox = (ListBox)sender;

Size size e.Graphics.MeasureString(listBox.Items[e.Index].ToString(),
listBox.Font).ToSize();
e.ItemWidth = size.Width;
e.ItemHeight = size.Height;

// réglage du scroll horizontal si nécessaire
if (listBox.HorizontalScrollbar // si l'affichage du scroll est
demandé
&& listBox.Width < e.ItemWidth // si la largeur de l'item est
supérieure à celle du controle
&& e.ItemWidth > listBox.HorizontalExtent // si un réglage
supérieur (item plus large deja mesuré) n'est pas déjà présent
)
{
listBox1.HorizontalExtent = e.ItemWidth;
}
}

A chaque listBox1.add, l'événement MeasureItem est levé, le bout de
code dedans calcul la taille de la chaîne et en fonction de la taille de la
listbox, il fait apparaître ou pas le scrollbar avec la propriété
HorizontalExtent.

David L


"Jean-Luc M." news:
a émis l'idée suivante :
> J'ai trouvé


C'est super ... mais il aurait été bien plus intéressant que tu donnes
la solution pour ceux qui pourraient un jour avoir le meme probleme.

--
Jean-Luc M.




Jean-Luc M.
Le #12145651
Impecc ! :D

Les forums comme celui-ci existent pour poser des questions mais aussi
pour trouver des réponses ... Celle-ci sera très certainement utile à
beaucoup d'autres.

--
Jean-Luc M.
Publicité
Poster une réponse
Anonyme