Csl91
Messages postés5Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention 4 juillet 2006
-
4 juil. 2006 à 17:36
hmarchal
Messages postés19Date d'inscriptionjeudi 28 juillet 2005StatutMembreDernière intervention27 octobre 2006
-
27 oct. 2006 à 12:10
Salut,
La question revient souvent je sais . En m'inspirant de ce qui est proposé à droite à gauche, force est de constater qu'il s'agit plutot de bricolage que d'une réelle synchronisation.
D'après ce que j'ai cru comprendre, avec une listbox on peut certes s'abonner aux Evenements de défilement/mouvements de la souris, mais dès lors qu'on cherche à utiliser les scrollbars des listbox pour synchroniser le défilement ... il semble ne pas y avoir d'abonnements possible à tout ce qui est Scrollable dans une listbox.
Je me trompe peut être, j'espère bien d'ailleurs, mais existe-t-il un moyen d'empecher l'affichage d'une scrollbar sur une listbox ? l'idée était d'utiliser une unique scrollbar pour synchroniser leur défilement à toutes.
Si vous avez des pistes sur le sujet, ou mieux, si vous pouviez me donner tord au sujet des abonnements scrollables d'une listbox, je vous en remercie.
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 5 juil. 2006 à 11:15
Bonjour,
Je ne crois pas qu'il soit possible d'empêcher l'affichage de la scrollbar verticale dans une ListBox (on peut simplement forcer son affichage, même lorsque la liste n'est pas pleine, en mettant la propriété ScrollAllwaysVisible à true, mais pas le contraire).
Je ne crois pas non plus qu'il existe un évènement déclenché par le scrolling (l'évènement Scroll existe uniquement pour les contrôles dérivés de ScrollableControl, dont la ListBox ne fait pas partie...).
Si tu ne veux pas utiliser le "bricolage" (qui consiste par exemple, dans le gestionnaire de l'évènement MouseWheel d'une ListBox, à envoyer un message WM_MOUSEWHEEL à l'autre ListBox), il te reste éventuellement la possibilité de créer ton propre contrôle.
hmarchal
Messages postés19Date d'inscriptionjeudi 28 juillet 2005StatutMembreDernière intervention27 octobre 2006 27 oct. 2006 à 12:10
Bonjour,
j'imagine répondre un peu tard, mais ça peux toujours aider quelqun...
Donc, j'ai réussi à empêcher l'affichage automatique de la vertical ScrollBar d'une ListBox. Je me suis inspiré de - ce post qui donne la solution en VB.
Voici la version en C# :
- Importer System.Runtime.InteropServices
- Déclarer :
[DllImport("user32.dll", SetLastError = true)]
private static extern long ShowScrollBar(IntPtr hwnd, int wBar, bool bShow);
et
private const int SB_HORZ = 0;
private const int SB_VERT = 1;
private const int SB_BOTH = 3;