2017-09-11 9 views
0

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

  1. 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.

Répondre

0

Essayez cette C# ListView Disable Horizontal Scrollbar

Pour cadre compact cela doit être changé pour

[DllImport ("coredll")] 
private static extern long ShowScrollBar (long hwnd , long wBar, long bShow); 
long SB_HORZ = 0; 
long SB_VERT = 1; 
long SB_BOTH = 3; 

private void HideHorizontalScrollBar() 
{ 
    ShowScrollBar(listView1.Handle.ToInt64(), SB_HORZ, 0); 
} 
private void HideScrollBars() 
{ 
    ShowScrollBar(listView1.Handle.ToInt64(), SB_BOTH, 0); 
} 

Il y a une autre solution à How to hide the vertical scroll bar in a .NET ListView Control in Details mode, encore une fois: remplacer user32 par coredll pour cadre compact/Windows Mobile 6.x

+0

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

+0

N'ont pas encore essayé la méthode dans la question liée ... – AlainD

+0

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