DataGridView, ColumnHeader, Text Wrap

15/10/2008 - 08:23 von Rainer Queck | Report spam
Hallo NG,

Ich möchte zur Laufzeit die Spaltenbreite eines DataGridViews aus dem Code
heraus anpassen, da mir die Eigenschaft AutoSizeColumnsMode -> ColumnHeader
kein zufriedenstellendes Ergebnis liefert. Die Spalten sind damit einfach
noch zu breit.

In meiner Methode zur Anpassung habe ich allerdings das Problem, dass wenn
eine Spalte einen mehrzeiligen Text enthàlt - cellstyle.WraperMode = true -
diese Spalte natürlich auch zu breit wird, da ich den Header.Text im Ganzen
bekomme.

Wie kann ich feststellen, wo der "Wrap" statt findet, bzw. wie komme ich an
die einzelnen Zeilen des Header.Text heran?

Danke für Hilfe und Hinweise.

Gruß
Rainer Queck
 

Lesen sie die antworten

#1 Frank Dzaebel
15/10/2008 - 09:52 | Warnen spam
Hallo Rainer,

Ich möchte zur Laufzeit die Spaltenbreite eines
DataGridViews aus dem Code heraus anpassen, da
mir die Eigenschaft AutoSizeColumnsMode ->
ColumnHeader kein zufriedenstellendes Ergebnis
liefert. Die Spalten sind damit einfach
noch zu breit.



Das liegt normal daran, dass die Spalte sortierbar
ist. Dann wird noch ein SortGlyphDirection-Icon
(normal) rechts in der DataGridViewColumnHeaderCell
angezeigt. Stellt man den SortMode auf "NotSortable",
wird der ColumnHeader auch schmaler angezeigt, denn
braucht man das Icon ja nicht:


DataGridView dgv = new DataGridView();

private void Form1_Load(object sender, EventArgs e)
{
dgv.Dock = DockStyle.Fill; Controls.Add(dgv);
InsertDgvColumns(dgv, "ID", "Vorname", "Nachname");
dgv.Rows.AddCopies(0, 10);
dgv.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.ColumnHeader;
}

private void InsertDgvColumns(DataGridView dgv, params string[]
columnNames)
{
foreach (string colName in columnNames)
{
DataGridViewColumn dc = new DataGridViewTextBoxColumn();
dc.SortMode = DataGridViewColumnSortMode.NotSortable;
// dc.HeaderCell.Style.Padding = new Padding(20, 0, 20, 0);
// dc.Width = TextRenderer.MeasureText(colName, Font).Width;
dc.Name = colName;
dc.HeaderText = colName;
dgv.Columns.Add(dc);
}
}


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

Ähnliche fragen