Wahid Bitar
Wahid Bitar

Reputation: 14074

How to set DataGridView textbox column to multi-line?

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

Upvotes: 53

Views: 93165

Answers (5)

rtuszynski
rtuszynski

Reputation: 31

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;

Upvotes: 1

Pavan M
Pavan M

Reputation: 9

    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;
    }

Upvotes: 0

usman Majeed
usman Majeed

Reputation: 51

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;            
}

Upvotes: 5

Tom Faust
Tom Faust

Reputation: 1415

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.

Upvotes: 34

Timothy S. Van Haren
Timothy S. Van Haren

Reputation: 8966

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

Upvotes: 79

Related Questions