Dites que j'ai un contrôle ListBox
ayant l'ID myList
, auquel j'ai ajouté 50 éléments. La barre de défilement verticale est inévitablement affichée sur le côté droit du contrôle. Deux questions connexes:Déterminer la hauteur de ListBox nécessaire pour supprimer la barre de défilement verticale
Comment puis-je déterminer à quelle valeur d'exécution pour définir
myList.Height
à de telle sorte que la barre de défilement ne sera pas affiché? Comment déterminer la hauteur requise par une rangée (avec rembourrage)?
La valeur de myList.ClientSize.Height
changements si la police est modifiée (pour l'internationalisation), donc ce doit être dynamique lors du chargement du formulaire. Remarque: Si vous vous demandez "Pourquoi supprimer la barre de défilement?", J'ai l'intention de gérer le défilement séparément en plaçant le ListBox
sur un contrôle parent et en modifiant myList.Top
en réponse aux clics sur les boutons Haut/Bas.
Malheureusement cela ne fonctionne pas car 'coredll.dll' n'exporte pas la méthode' ShowScrollbar'. Dans les applications managées qui utilisent 'P/Invoke', il est judicieux d'appeler' Marshal.PrelinkAll (this.GetType()) 'au début de la vie de l'application pour confirmer que toutes les méthodes' P/Invoke' sont disponibles. Mon application lance immédiatement une exception pour 'ShowScrollbar'. – AlainD
N'ont pas encore essayé la méthode dans la question liée ... – AlainD
Une bonne solution de contournement, suggérée dans cet article: https://www.pcreview.co.uk/threads/hiding-vertical-scrollbar-in-listbox.2890942 /, est de simplement limiter le nombre d'éléments dans ListBox ou ListView afin qu'aucune barre de défilement ne soit requise. Il vous suffit ensuite de modifier un numéro de page et de mettre à jour l'affichage pour le faire défiler vers le haut ou vers le bas. – AlainD