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

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


person Wahid Bitar    schedule 13.10.2009    source источник


Ответы (4)


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

person Tim S. Van Haren    schedule 13.10.2009
comment
вам также необходимо установить dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; см. этот пост - person BornToCode; 09.07.2012
comment
Помните, что если вы используете пользовательские стили ячеек в своей таблице, вам нужно указать WrapMode для каждого из них, который вы хотите обернуть, поскольку новые стили по умолчанию имеют значение false. - person Slate; 07.04.2014

Я обнаружил, что вам нужно сделать две вещи в дизайнере, чтобы текстовая ячейка отображала несколько строк. Как упоминал Тим С. Ван Харен, вам необходимо установить WrapMode из DefaultCellStyle вашего DataGridViewTextBoxColumn на true. И хотя это действительно приводит к переносу текста, это не заставляет строку расширяться, чтобы показать что-либо за пределами первой строки. В дополнение к WrapMode, AutoSizeRowsMode DataGridView должен быть установлен на соответствующее значение перечисления DataGridViewAutoSizeRowsMode. Такое значение, как DataGridViewAutoSizeRowsMode.AllCells, позволяет ячейке расширяться по вертикали и отображать весь обернутый текст.

person Tom Faust    schedule 22.08.2011
comment
Для справки, AutoSizeRowsMode является свойством DataGridView, и для него необходимо установить что-то вроде DataGridViewAutoSizeRowsMode.AllCells. - person Rebecca Scott; 31.08.2011
comment
Как заявил @BenScott, _ 1_ не является логическим значением, и ему должно быть присвоено соответствующее DataGridViewAutoSizeRowsMode значение перечисления. Я отредактирую ответ, чтобы отразить это. - person Derek W; 19.01.2015
comment
Я также установил для AlternatingRowsDefaultCellStyle.WrapMode значение True, чтобы заставить его работать. - person John Kurtz; 23.03.2018

Помимо установки 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;            
}
person usman Majeed    schedule 21.01.2010

Если вы хотите установить свойство Multiline только для одного столбца вашего DataGridView, вы можете сделать

dataGridView.Columns[0].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
person rtuszynski    schedule 28.02.2021
comment
На вопрос был дан ответ 11 лет назад, вы действительно думаете, что ваш ответ лучше принятого? - person Igor Goyda; 28.02.2021
comment
@IgorGoyda Да, похоже, на вопрос создателя нет ответа, как сделать свойство Multiline для столбца. Это то, что я искал и не нашел здесь ответа. Он не спрашивал, как сделать это для каждой колонки, и все ответы привели к этому. Также много ответов было дано 3 года назад, поэтому мне интересно, почему вы так грубы по отношению ко мне. - person rtuszynski; 01.03.2021
comment
Думаю, вы пропустили принятый ответ, пожалуйста, прочтите его внимательно. Что до меня, то я не вижу разницы между вашим и принятым. - person Igor Goyda; 01.03.2021