Как установить столбец DataGridView для текстового поля в несколько строк?

Как пустить " DataGridViewTextBoxColumn" в DataGridView поддерживает свойство Multiline ?

13.10.2009 12:19:41
4 ОТВЕТА
РЕШЕНИЕ

Вы должны быть в состоянии достигнуть этого, установив WrapModeиз DefaultCellStyleвашего DataGridViewTextBoxColumnTo true.

69
13.10.2009 12:31:11
Вы также должны установить dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;увидеть этот пост
BornToCode 8.07.2012 23:05:06
Помните, что если вы используете в своей таблице пользовательские стили ячеек, вам нужно будет указать WrapMode для каждого, который вы хотите обернуть, поскольку новые стили по умолчанию устанавливают значение false.
kjhf 7.04.2014 12:42:25

Помимо создания WrapModeиз DefaultCellStyle, вы можете сделать следующее:

  1. Вам нужно поймать EditingControlShowingсобытие GridView
  2. Приведите Controlсвойство EventArgs к нужному типу (т. Е. К текстовому полю, флажку или кнопке).
  3. Используя этот приведенный тип, измените Multilineсвойство, как показано ниже:
private void MyGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    TextBox TB = (TextBox)e.Control;
    TB.Multiline = true;            
}
4
4.11.2015 20:58:21

Я обнаружил, что нужно сделать две вещи, как в конструкторе, чтобы текстовая ячейка отображала несколько строк. Как Tim S. Van Haren упоминалось, вам необходимо установить WrapModeиз DefaultCellStyleвашего DataGridViewTextBoxColumnTo true. И хотя это делает перенос текста, строка не расширяется, чтобы показать что-либо за пределами первой строки. В дополнение к WrapMode, для AutoSizeRowsModeof DataGridViewдолжно быть установлено соответствующее DataGridViewAutoSizeRowsModeзначение перечисления. Значение, например, DataGridViewAutoSizeRowsMode.AllCellsпозволяет ячейке расширяться по вертикали и отображать весь обернутый текст.

29
19.01.2015 17:28:46
Для справки, AutoSizeRowsModeявляется свойством DataGridView, и должно быть установлено что-то вродеDataGridViewAutoSizeRowsMode.AllCells
Rebecca Scott 31.08.2011 02:52:14
Как сказал @BenScott, DataGridView.AutoSizeRowsModeэто не булево значение, и ему должно быть присвоено соответствующее DataGridViewAutoSizeRowsModeзначение перечисления. Я отредактирую ответ, чтобы отразить это.
Derek W 19.01.2015 17:23:12
Я также установил для AlternatingRowsDefaultCellStyle.WrapMode значение True, чтобы заставить его работать.
John Kurtz 23.03.2018 16:37:00
    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;
    }
0
26.06.2018 06:48:16