/ Je možné vypnúť horizontálne posúvanie samotné v zozname? - vb.net, listview, scroll

Je možné deaktivovať horizontálne posúvanie v zozname? - vb.net, listview, scroll

V podstate sa len zaujímam, či je možné zakázať horizontálne posúvanie, zatiaľ čo vertikálne rolovanie umožní zobrazenie zoznamu vo VB.NET bez toho, aby musel vytvoriť novú triedu.

Prečo? Nuž, čisto estetické, má môj zoznam v súčasnosti malý trochu horizontálne zvitok v ňom, čo nestojí za to úsilie, aby sa nová trieda práve pre to, hoci ak to môže byť kódované bez príliš veľa úsilia, byť viac ako ochotní to urobiť.

PS: Pracujem vo Windows Formách

odpovede:

2 pre odpoveď č. 1

V zobrazení podrobností často používam ovládacie prvky ListViews jedným stĺpcom s cieľom poskytnúť zoznam funkcií drag-and-drop, ktoré chýbajú v ovládacom prvku ListBox. ListView funguje skvele pre to okrem svojho nepríjemného zvyku chcieť posúvať horizontálne. Možno to dosiahnuť do určitej miery tým, že nastavíte šírku stĺpca na vhodnú hodnotu (zvyčajne 4 menej ako šírka ListView), ale toto sa nebude dať dobre, ak sa vzhľad a zmysel zmení a úplne zlyhá ak sa riadiaci rozhodne pridať vertikálnu posuvnú lištu v čase spustenia.

Riešenie, ktoré používam (a ja pripúšťam, že sa s každou situáciou nerobí) je toto. Najprv nakonfigurujte ListView s jedným stĺpcom (názov je ľubovoľný) a skryje jeho hlavičku:

lvList.View = View.Details
lvList.FullRowSelect = True
lvList.Columns.Add("ColName")
lvList.Columns(0).Width = lvList.ClientSize.Width
lvList.HeaderStyle = ColumnHeaderStyle.None

Potom spracujte udalosť ClientSizeChanged ListView a použite na nastavenie šírky stĺpca na šírku oblasti klienta (čo je v podstate oblasť, ktorú musí telo zoznamu vyplniť):

Private Sub lvList_ClientSizeChanged(ByVal sender As Object, ByVal e As EventArgs) _
Handles lvList.ClientSizeChanged
If lvList.Columns.Count > 0 Then
lvList.Columns(0).Width = lvList.ClientSize.Width
End If
End Sub

Pri zmene obsahu zoznamu a pridaní alebo odstránení vertikálneho posúvača sa spustí udalosť ClientSizeChange a upraví šírku stĺpca tak, aby presne vyplnila oblasť klienta.