ListView AutoResizeColumns, basierend auf dem Inhalt der Spalten und header
verwenden wir diese zwei Methoden zum anpassen der Spalte Länge, basierend auf dem Inhalt der Spalten und header resp.
ListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
ListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
Aber wie passen Sie basiert auf beides? d.h. einstellen auf die längste Länge, für Spalten und header-Inhalt.
InformationsquelleAutor der Frage william007 | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
lvw.Columns[0].Width = -2
Siehe Anmerkungen im MSDN für details:
http://msdn.microsoft.com/en-us/library/system.windows.forms.columnheader.width.aspx
Beachten Sie auch, dass MSDN sagt, dass die 'autosize die Breite der Spaltenüberschriften, festlegen der Width-Eigenschaft auf -2.', aber eigentlich funktioniert es für Spaltenüberschriften UND die Spalte Inhalt.
Hier ist ein code, um zu beweisen, dass:
InformationsquelleAutor der Antwort Anton Kedrov
Als beantwortet hierAufruf von Skalierungs-Optionen machen den job :
InformationsquelleAutor der Antwort Tanguy
Dies ist, was ich verwenden, um die Spaltenbreite anpassen, um Inhalt und header:
Beispiel verwenden:
Die Methode ist nicht wirklich gut getestet, aber zumindest funktioniert es im Kontext ich bin mit es in.
InformationsquelleAutor der Antwort matsolof
Ist es möglich, in der Tat zu verwenden MeasureText und dann zu berechnen, wie viel Platz ist Links und irgendwie verteilen zwischen allen Spalten. Aber dies ist quick-and-dirty Ansatz, die habe ich schnell codiert:
Werden und je nachdem, wie viele Spalten Sie haben - geben Sie jeder Spalte "Anteil" oder einfach Anzahl. Zum Beispiel für 3 Spalten - Aufruf sieht wie folgt aus:
Diese verteilen Spalte Größen wie:
6 * 100% /(6 + 3 + 1) = 60% für die erste Spalte,
30% für die nächsten und 10% für die übrigen.
Ist das irgendwie schlechter Mann, der die schnelle Umsetzung. 🙂
InformationsquelleAutor der Antwort TarmoPikaro
In meinem Fall habe ich dies über die nächsten Schritte (für zwei Spalten mit Daten):
In VB.NET:
InformationsquelleAutor der Antwort Asrhael
Hier ist eine C# - Lösung, die verwendet werden können für jede ListView. Es wird davon ausgegangen, Anzahl der Spalten und Kopfzeilen nicht ändern, für jede gegebene Liste anzeigen. Loszuwerden, die listViewHeaderWidths Wörterbuch, wenn Sie möchten, um eine Neuberechnung header breiten jedes mal (wenn Header ändern, oder die Anzahl der Spalten ändert).
InformationsquelleAutor der Antwort GreggD
Anton Kedrov Antwort ist das beste, aber in meinem Fall habe ich eine listview mit mehr als 50 Spalten und ich aktualisieren Sie Ihre Daten regelmäßig, in diesem Fall merke ich listview.AutoResizeColumns führt viel schneller arbeiten, damit ich m schreiben dieses Lösung auch
Erste Methode, indem Sie die Einstellung mit -2
Zweite Methode, die ich verwendet (weniger flimmern auf mehreren Anrufe)
InformationsquelleAutor der Antwort Jack Gajanan
Ist das einfach (obwohl es dauerte eine Weile, um herauszufinden,)...
Wissen wir, dass die Breite muss mindestens so groß wie die Spaltenüberschriften, so dass wir alle in den header-text. Darüber hinaus kann die Breite erweitern größereum Platz für Inhalte. Daher werden wir Folgendes tun:
Ist es nicht notwendig, Spurweiten separat und setzen Sie Sie wie andere Poster vermuten. Einstellung der minimalen Breite für die Spalte löst das Problem, bis der header-text geändert, in dem Fall legen Sie die minimale Breite auf 0, autosize nur die Spalte geändert, und legen Sie dann die minimale Breite, um die aktuelle Breite wieder.
EDIT: Meine Entschuldigung, ich vergaß, dass ich war nicht mit dem standard listview, sondern die 3rd-party-Produkt BetterListView (eine Kostenlose version ist verfügbar). Der standard-listview-Spalten nicht angezeigt, um die Unterstützung einer minimalen Breite. Ich empfehle BetterListView hoch als eine gute alternative (viel bessere Funktion und Leistung).
InformationsquelleAutor der Antwort Ben W.