Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Listbox et scrollbar

4 réponses
Avatar
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

4 réponses

Avatar
d
J'ai trouvé

"" a écrit dans le message de
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




Avatar
Jean-Luc M.
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.
Avatar
d
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." a écrit dans le message de
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.




Avatar
Jean-Luc M.
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.