DataGridView-Spalte passt die Breite automatisch an und ist in der Größe veränderbar

7

Ich frage mich, ob es möglich ist, eine datgridview-Spalte zu haben, um ihre Breite automatisch an den Inhalt anzupassen und gleichzeitig vom Benutzer in der Größe veränderbar zu sein?

Hier, was ich bisher versucht habe:

%Vor%

Aber ich kann die Spaltengröße immer noch nicht manuell ändern.

Wenn jemand bereits auf dieses Problem gestoßen ist oder eine Idee hat, lassen Sie es mich wissen.

Danke.

    
wallou 18.07.2013, 14:27
quelle

5 Antworten

16

Ich finde endlich einen Weg zu tun, was ich wollte.

Die Idee ist

  • Lassen Sie die dataGridView die Spalten selbst so skalieren, dass sie auf den Inhalt passen und dann
  • ändere AutoSizeColumnMode und setze die Breite mit dem Wert, den du gerade gespeichert hast.

Hier ist der Code:

%Vor%

Hoffe, das wird helfen.

    
wallou 19.07.2013, 13:45
quelle
2

Aufbauend auf dem obigen Code, um es für alle Spalten zu iterieren und die Breite des DataGridView

anzupassen %Vor%     
Justin 05.04.2016 11:18
quelle
0

Die Sache, die nicht offensichtlich ist (es war nicht für mich), ist, dass die Verwendung von AutoSizeMode bedeutet, dass die Größe verwaltet werden soll, was impliziert, dass der Benutzer keine Größenänderung durchführen würde (kann). Also, was ich versucht habe und es scheint zu arbeiten, ist DataGridView.AutoResizeColumn (beachten Sie, dass es eine einmalige Größenänderung) für jede Spalte oder die meisten Spalten setzt dann DataGridView.AllowUserToResizeColumns auf True. Es gibt wahrscheinlich andere Variationen, aber die wichtige Sache ist, dass die Verwendung von AutoSizeMode sich gegenseitig ausschließt und es dem Benutzer erlaubt, eine Größenänderung vorzunehmen.

    
user34660 07.12.2016 23:47
quelle
0
  • Danke für die obige Lösung (Um das DataGridView.Columns zu durchlaufen, ändern Sie AutoSizeMode in ein gültiges, sammeln Sie den Wert für die Breite und setzen Sie ihn zurück nach Änderung AutoSizeMode auf DataGridViewAutoSizeColumnMode.None ).
  • Ich habe damit gerungen und festgestellt, dass es nicht funktioniert, wenn es aus dem Klassenkonstruktor oder einer Zeile vor Form.Show() oder Form.ShowDialog() aufgerufen wird. Also habe ich dieses Code-Snippet in das Form.Shown Event eingefügt und das funktioniert für mich.
  • Mein transformierter Code, egal was DataGridView.AutoSizeColumnsMode zuvor gesetzt hat, ich benutze DataGridViewColumn.GetPreferredWidth() anstelle von DataGridViewColumn.AutoSizeMode und setze den width Wert sofort, dann ändere DataGridView.AutoSizeColumnsMode einmal:

    %Vor%
  • Achten Sie darauf,

    einzustellen %Vor%
  • Ich weiß nicht, wie das funktioniert, nachdem das Formular angezeigt wird.

user1779049 13.04.2017 14:38
quelle
0

Sie können einfach diesen einfachen Code verwenden:

%Vor%

Nach dem Einstellen der Datenquelle. Es wird die Breite festlegen und Größenänderung erlauben.

    
asady 19.01.2018 11:04
quelle

Tags und Links