Wie kann ich dafür sorgen, dass die Größe der Spalten einer ListView automatisch programmgesteuert geändert wird?

StackOverflow https://stackoverflow.com/questions/57584

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?

War es hilfreich?

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.

Mehr Infos

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top