Wie kann ich dafür sorgen, dass die Größe der Spalten einer ListView automatisch programmgesteuert geändert wird?
-
09-06-2019 - |
Frage
Ich habe einige Beispiele gefunden, die die Win32-API verwenden oder die Tastenkombination ^+ simulieren (Strg-+) mit SendKeys, aber zumindest mit der SendKeys-Methode erfasst die Listenansicht den Cursor und setzt ihn auf eine Sanduhr, bis ich die Starttaste auf meiner Tastatur drücke.Wie geht das am saubersten?
Lösung
Sieht aus wie ein Anruf myListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
tun, was Sie wollen. Ich würde denken, nennen Sie es einfach nach ein Element hinzugefügt wird.
Andere Tipps
Nach MSDN , wenn Sie die Spaltenbreite setzen dann auf -1 wird zu dem breitesten Punkt autosize
Schleife durch alle Spalten und setzte Breite auf -1 nach Hinzufügen von Inhalten.
Nach dem Hinzufügen der folgenden Routine dann zu Ihrem Code aus jeder Prozedur / Funktion aufrufen. Verwenden Sie es nicht in Ihrem „Form_Load“ Verfahren though. Nur es nennen, nachdem Sie einen Artikel in Listview hinzugefügt haben (oder wenn Sie mehrere Ergänzungen machen, nennen Sie es einmal am Ende aller Ergänzungen):
Private Sub AutoSizeListViewColumns(oListView As ListView)
Dim nCol As Integer = 0
SuspendLayout()
For nCol = 0 To (oListView.Columns.Count - 1)
oListView.Columns(nCol).Width = -1 'forces autosizing on column
Next
oListView.Refresh()
ResumeLayout()
End Sub