2017-09-11 4 views
0

Angenommen, ich habe eine ListBox Steuerung mit der ID myList, zu der ich 50 Elemente hinzugefügt habe. Die vertikale Bildlaufleiste wird zwangsläufig auf der rechten Seite des Steuerelements angezeigt. Zwei verwandte Fragen:Ermitteln der Höhe der ListBox zum Entfernen der vertikalen Bildlaufleiste

  1. Wie bestimme ich zur Laufzeit, was Wert zu setzen myList.Height zu , so dass die Scrollbar wird NICHT angezeigt?

  2. Wie ermittle ich die Höhe, die eine Zeile erfordert (mit Padding)?

Der Wert myList.ClientSize.Height ändert, wenn die Schrift (für die Internationalisierung) geändert wird, so muss diese Dynamik sein, wenn das Formular geladen.

Hinweis: Wenn Sie sich fragen, warum die Bildlaufleiste entfernt werden soll, beabsichtige ich, separat zu scrollen, indem Sie die ListBox auf ein übergeordnetes Steuerelement setzen und myList.Top als Reaktion auf Klicks auf Hoch/Runter-Tasten ändern.

Antwort

0

Versuchen Sie, diese C# ListView Disable Horizontal Scrollbar

Für kompakte Rahmen dies zu

geändert werden muss
[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); 
} 

Es gibt eine andere Lösung bei How to hide the vertical scroll bar in a .NET ListView Control in Details mode, wieder: ersetzen user32 durch coredll für Compact Framework/Windows Mobile 6.x

+0

Leider funktioniert das nicht, da 'coredll.dll' die' ShowScrollbar' Methode nicht exportiert. In verwalteten Anwendungen, die "P/Invoke" verwenden, ist es sinnvoll, 'Marshal.PrelinkAll (this.GetType());' zu Beginn der Anwendungslebensdauer zu verwenden, um zu bestätigen, dass alle "P/Invoke" -Methoden verfügbar sind. Meine Anwendung löst sofort eine Ausnahme für "ShowScrollbar" aus. – AlainD

+0

Haben Sie die Methode in der verknüpften Frage noch nicht ausprobiert ... – AlainD

+0

Eine nette Abhilfe, in diesem Artikel vorgeschlagen: https://www.pcreview.co.uk/threads/hiding-vertical-scrollbar-in-listbox.2890942 /, ist es, die Anzahl der Elemente in ListBox oder ListView zu beschränken, sodass keine Bildlaufleiste erforderlich ist. Sie ändern dann nur eine Seitennummer und aktualisieren die Ansicht, um nach oben oder unten zu scrollen. – AlainD

Verwandte Themen