How to set DataGridView textbox column to multi-line?
Asked Answered
W

5

53

How to let "DataGridViewTextBoxColumn" in DataGridView supports Multiline property?

Whitt answered 13/10, 2009 at 12:19 Comment(0)
I
79

You should be able to achieve this by setting the WrapMode of the DefaultCellStyle of your DataGridViewTextBoxColumn to true.

Internal answered 13/10, 2009 at 12:26 Comment(2)
you also need to set dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; see this postReconnoitre
Remember that if you use custom Cell Styles in your table, you'll need to specify the WrapMode for each one you want wrapping, as new Styles default it to false.Sothena
A
33

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.

Admix answered 22/8, 2011 at 20:50 Comment(3)
For reference, AutoSizeRowsMode is a property of the DataGridView, and needs to be set to something like DataGridViewAutoSizeRowsMode.AllCellsSmite
As @BenScott has stated, 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
I also set the AlternatingRowsDefaultCellStyle.WrapMode to have True to get it to work.Terresaterrestrial
C
5

Apart from setting WrapMode of the DefaultCellStyle, you can do the following:

  1. You need to catch GridView's EditingControlShowing Event
  2. Cast Control property on the EventArgs to the type you want (i.e. textbox, checkbox, or button)
  3. 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;            
}
Creek answered 21/1, 2010 at 6:41 Comment(0)
D
0
    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;
    }
Dorita answered 26/6, 2018 at 6:48 Comment(0)
B
0

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;
Blintze answered 28/2, 2021 at 19:17 Comment(4)
Question was answered 11 years ago, do you really think your answer is better than accepted one?Owens
@IgorGoyda Yes as it seems there is no answer for creator question "how to make Multiline property for a column". This is what I was searching for and did not find answer here. He did not asked how to make it for every column and all the answers lead to it. Also many answers were made 3 years ago so I wonder why are you so rude towards me.Blintze
I guess you missed the accepted answer, please, read it carefully. As for me, I don't see a difference between yours and accepted.Owens
I guess I missed the accepted answer, too - specifically the "DefaultCellStyle" component. This plainly lists example code that works, which in this case, helped me get past my stumbling block, so +1 for that, even 11+ years after the original poster.Bili

© 2022 - 2024 — McMap. All rights reserved.