How to let "DataGridViewTextBoxColumn
" in DataGridView
supports Multiline property?
You should be able to achieve this by setting the WrapMode
of the DefaultCellStyle
of your DataGridViewTextBoxColumn
to true
.
I have found that there are two things that you need to do, both in the designer, to make a text cell show multiple lines. As Tim S. Van Haren mentioned, you need to set WrapMode
of the DefaultCellStyle
of your DataGridViewTextBoxColumn
to true
. And although that does make the text wrap, it doesn't make the row expand to show anything beyond the first line. In addition to WrapMode
, the AutoSizeRowsMode
of the DataGridView
must be set to the appropriate DataGridViewAutoSizeRowsMode
enumeration value. A value such as DataGridViewAutoSizeRowsMode.AllCells
allows the cell to expand vertically and show the entire wrapped text.
AutoSizeRowsMode
is a property of the DataGridView
, and needs to be set to something like DataGridViewAutoSizeRowsMode.AllCells
–
Smite DataGridView.AutoSizeRowsMode
is not a boolean value and must be assigned the appropriate DataGridViewAutoSizeRowsMode
enumeration value. I will edit the answer to reflect this. –
Schulman Apart from setting WrapMode
of the DefaultCellStyle
, you can do the following:
- You need to catch GridView's
EditingControlShowing
Event - Cast
Control
property on the EventArgs to the type you want (i.e. textbox, checkbox, or button) - Using that casted type, change the
Multiline
property like below:
private void MyGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox TB = (TextBox)e.Control;
TB.Multiline = true;
}
int multilineht = 0;
private void CustGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
multilineht = CustGridView.Rows[CustGridView.CurrentCell.RowIndex].Height;
CustGridView.AutoResizeRow(CustGridView.CurrentCell.RowIndex, DataGridViewAutoSizeRowMode.AllCells);
}
private void CustGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
CustGridView.Rows[CustGridView.CurrentCell.RowIndex].Height = multilineht;
}
If you would like to set Multiline property just for one column of your DataGridView
you can do
dataGridView.Columns[0].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
© 2022 - 2024 — McMap. All rights reserved.
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
see this post – Reconnoitre