lowerkey lowerkey - 11 months ago 55
C# Question

How to set rows' height to automatically resize so contents fit

I'm working on DataGridView and was wondering if there's a property that automatically makes cells bigger if the content requires it.

So far I have, at the end of the DataGridViewBindingComplete handler:


But unfortunately, that didn't do the trick.

Here's what I tried so far:

public partial class Form1 : Form
private void dgv1BindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)

public Form1()

// [...] set up datasource: orders

dataGridView1.AutoGenerateColumns = false;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.DataSource = orders;

DataGridViewTextBoxColumn idCol = new DataGridViewTextBoxColumn();
idCol.DataPropertyName = "id";
idCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
idCol.HeaderText = "#";
idCol.DisplayIndex = 0;

DataGridViewTextBoxColumn placedCol = new DataGridViewTextBoxColumn();
placedCol.DataPropertyName = "placed";
placedCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
placedCol.HeaderText = "Time Placed";
placedCol.DisplayIndex = 1;

// [...] more of these columns

// [...] adding the rest of the columns

dataGridView1.DataBindingComplete += dgv1BindingComplete;

With the following result:

Orders description is on one line. Image cell is not enlarged.

Answer Source

The answer was hidden in another Stackoverflow question: How to set datagridview textbox column to multi-line?

Setting the DefaultCellStyle.WrapMode to TriState.True did the trick.