DataGridView: Autosize und AllowUserTo ResizeColumns widersprechen sich

19/09/2009 - 11:19 von Alberto Luca | Report spam
Hallo NewsGroup,

ich befülle ein DataGridView mittels .DataSource.
Dabei möchte ich, dass die Spaltenbreite abhàngig vom Dateninhalt gesetzt
werden.
Gleichzeit möchte ich jedoch, dass der User die Spaltenbreite veràndern
kann.
Ich habe schon alle möglichen Kombinationen versucht, musste jedoch
feststellen, dass nur bei

this.dgvUser.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.None;

ein Veràndern der Spaltenbreite möglich ist.
Bei dieser Einstellung ist jedoch die Spaltenbreite nicht abhàngig vom
Dateninhalt.

Wie kann ich beides erreichen?

Coding:
this.dgvUser.AllowUserToResizeColumns = true;
this.dgvUser.AutoSize = true;
//this.dgvUser.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
this.dgvUser.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader; // ResizeColumn
nicht mehr möglich
//this.dgvUser.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.None;

Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Frank Dzaebel
19/09/2009 - 14:46 | Warnen spam
Hallo Alberto,

Wie kann ich beides erreichen?



Dann solltest Du exakt beschreiben, was Du für ein
Verhalten haben willst.
1) wie breit sollen die Spalten standardmàssig sein.
2) Was soll passieren, wenn der Benutzer die Spalten-
Breite modifiziert.
3) Was soll bei einem Resize der Form passieren, wenn
das DGV über die Anchors oder Dock gebunden ist.
4) [Schàtzungsweise sollen die Columns resizebar sein,
und diese Benutzer-Einstellung soll das Standard-Verhalten
überschreiben]

Da ich nicht weiss, welches Verhalten Du wünschst,
geb ich Dir einen Tip auf den Weg:

Du kannst die Anfangs-Breiten der Spalten auch
einmal setzen und dann wieder auf
"DataGridViewAutoSizeColumnsMode.None"
zurücksetzen. Etwa so:

personDataGridView.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.Fill;
personDataGridView.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.None;

Dadurch sind sie resize-bar, aber trotzdem am Anfang
in Fill-Semantik platziert. Allerdings würden
bei einem Resize der Form nicht mehr die Spalten
resized werden, was ja aber auch leicht anpassbar wàre.
______

Zweiter Tip: Setze diese Modi ggf. nach dem Setzen des
DataSource, damit (z.B. bei einem *AllCells) diese
auch berücksichtigt werden können.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen