Sie müssen die DataGridViewColumn.AutoSizeMode
Eigenschaft verwenden.
Sie können einen dieser Werte für die Spalten 0 und 1 verwenden:
AllCells: Die Spaltenbreite wird an den Inhalt aller Zellen in der Spalte angepasst , einschließlich der Kopfzelle.
AllCellsExceptHeader: Die Spaltenbreite wird an den Inhalt aller Zellen in der Spalte angepasst , mit Ausnahme der Kopfzelle.
DisplayedCells: Die Spaltenbreite wird an den Inhalt aller Zellen in der Spalte angepasst, die sich in Zeilen befinden, die derzeit auf dem Bildschirm angezeigt werden, einschließlich der Kopfzelle.
DisplayedCellsExceptHeader: Die Spaltenbreite wird an den Inhalt aller Zellen in der Spalte angepasst, die sich in Zeilen befinden, die derzeit auf dem Bildschirm angezeigt werden, mit Ausnahme der Kopfzelle.
Dann verwenden Sie den Füllwert für Spalte 2
Die Spaltenbreite wird so angepasst, dass die Breite aller Spalten den Anzeigebereich des Steuerelements genau ausfüllt ...
this.DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
this.DataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
this.DataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
Wie von anderen Benutzern hervorgehoben, kann der Standardwert auf der datagridview
Ebene der DataGridView.AutoSizeColumnsMode
Eigenschaft festgelegt werden.
this.DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
this.DataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
könnte sein:
this.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
Wichtige Notiz:
Wenn Ihr Raster an eine Datenquelle gebunden ist und Spalten automatisch generiert werden ( AutoGenerateColumns
Eigenschaft auf True festgelegt), müssen Sie das DataBindingComplete
Ereignis verwenden, um den Stil anzuwenden, nachdem Spalten erstellt wurden.
In einigen Szenarien (z. B. Ändern des Zellenwerts durch Code) musste ich aufrufen DataGridView1.AutoResizeColumns();
, um das Raster zu aktualisieren.
Dies ist mein Lieblingsansatz ...
quelle
index out of bound exception
beheben Sie das einfach, danke !!Ändern Sie einfach das Eigentum vom Eigentum der Kontrolle:
AutoSizeColumnsMode:Fill
ODER Nach Code
dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;
quelle
Nicht getestet, aber Sie können es versuchen.Getestet und funktionsfähig. Ich hoffe , dass Sie mit spielen können ,AutoSizeMode
vonDataGridViewColum
zu erreichen , was Sie brauchen.Versuchen Sie die Einstellung
Das sollte funktionieren
quelle
Versuchen Sie es,
quelle
quelle
GridCol
. Zweitens wird der AutoSizeMode für jede Spalte auf zwei verschiedene Werte eingestellt. Die zweite Zuordnung überschreibt die erste.Um auf der Antwort von AlfredBr aufzubauen, können Sie, wenn Sie einige Ihrer Spalten ausgeblendet haben, die folgenden Elemente verwenden, um die Größe aller Spalten automatisch zu ändern und dann nur die letzte sichtbare Spalte den leeren Bereich ausfüllen zu lassen:
quelle
Dies ist, was ich getan habe, damit die Spalte "Vorname" den Raum ausfüllt, wenn nicht alle Spalten dies können.
Wenn das Raster zu klein wird, wird die Spalte "Vorname" fast unsichtbar (sehr dünn), sodass ich den DataGridViewAutoSizeColumnMode auf AllCells als die anderen sichtbaren Spalten setzen kann. Bei Leistungsproblemen ist es wichtig, diese vor dem Binden der Daten auf Keine und im DataBindingComplete-Ereignishandler des Rasters auf AllCell zurückzusetzen. Ich hoffe es hilft!
quelle
quelle
Versuche dies :
quelle