So blenden Sie die vertikale Bildlaufleiste in einem .NET-ListView-Steuerelement im Detailmodus aus

8

Ich habe ein ListView-Steuerelement im Details-Modus mit einer einzelnen Spalte. Es ist auf einem Formular, das nur mit der Tastatur verwendet werden soll, meistens mit den Auf- / Abwärtspfeilen zum Scrollen und Enter zur Auswahl. Also brauche ich die Scrollbars nicht wirklich und möchte sie einfach nicht für ein saubereres Aussehen zeigen. Wenn ich jedoch die ListView.Scrollable-Eigenschaft auf false festlege, kann ich das ausgewählte Element immer noch nach oben und unten verschieben, aber sobald es sich zu einem Element bewegt, das derzeit nicht angezeigt wird, wird die Liste nicht verschoben, um dieses Element anzuzeigen. Ich habe versucht, mithilfe von EnsureVisible programmgesteuert durch die Liste zu blättern, aber es tut nichts in diesem Modus.

Gibt es eine Möglichkeit, die Liste manuell nach oben oder nach unten zu bewegen, um einen Bildlauf durchzuführen, ohne dass die Bildlaufleiste angezeigt wird?

    
Adam Haile 21.03.2010, 20:37
quelle

6 Antworten

13

Es ist nicht einfach, aber es kann getan werden. Wenn Sie versuchen, die Bildlaufleiste durch ShowScrollBar zu verbergen, wird die ListView es einfach wieder zurückstellen. Also musst du etwas hinterhältiger machen.

Sie müssen die Meldung WM_NCCALCSIZE abfangen und dort den vertikalen Bildlaufstil deaktivieren. Immer wenn die Listenansicht versucht, sie wieder einzuschalten, werden Sie sie in diesem Handler wieder ausschalten.

%Vor%

Damit erhalten Sie eine ListView ohne Bildlaufleisten, die immer noch scrollt, wenn Sie mit den Pfeiltasten die Auswahl ändern.

    
Grammarian 23.03.2010, 13:12
quelle
1

Da ShowScrollBar nicht funktioniert hat, hilft das vielleicht:

%Vor%     
Nagg 21.03.2010 21:16
quelle
1

Ich habe etwas leichter gemacht. Ich habe scrollbar auf "true" gesetzt und einen benutzerdefinierten Slider (colorSlider) benutzt, den ich auf codeproject gefunden habe. Ich habe den Schieberegler über die Position gezogen, an der der vscroller erscheinen würde, und dann die useVisible Funktion verwendet.

    
visar1990 16.05.2011 09:32
quelle
0

Rufen Sie die API-Methode ShowScrollBar auf.

>     
SLaks 21.03.2010 20:41
quelle
0

Wenn ShowScrollBar nicht funktioniert, bin ich nicht sicher, wie es geht.

Sie könnten das ListView in ein Panel einfügen und das ListView breiter als das Panel machen, so dass die Scrollbar abgeschnitten wird (siehe SystemInformation.VerticalScrollBarWidth ), aber das ist ein erschreckend hässlicher Hack.

    
SLaks 21.03.2010 21:09
quelle
0

Sie können ListView.Scrollable-Eigenschaft verwenden. Setzen Sie es auf false und Scroll-Balken werden nicht angezeigt!

    
Dito Qarcidze 22.02.2013 20:09
quelle

Tags und Links