2013-12-13 3 views
1

Я пытаюсь отобразить текст в нескольких строках в ячейке DataGridView. Я не хочу использовать режим Wrap, потому что текст не очень длинный. Я просто хочу показать первое слово в первой строке, а второе - следующее. Обратите внимание на полужирный текст на второй строке.Многострочный текст в ячейке DataGridView


Имя: а
Город: хуг

Я пытался сделать это с помощью Environment.NewLine и "\ г \ п", но ни работы.

private void dgv_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
    { 
     foreach (DataGridViewRow dgvrow in dgv.Rows) 
     { 
      if (dgv.CurrentCell.ColumnIndex == dgv.Columns["Name"].Index) 
      { 
       DataGridViewCell dgvcell = (DataGridViewCell)dgvrow.Cells["Name"]; 
       string Name = dgvcell.Value.ToString(); 
       string City = Name.Substring(Name.IndexOf("City:")); 
       Name = Name.Substring(0, Name.IndexOf("City:")) + Environment.NewLine + City; 
       dgvcell.Value = Name; 
      } 
     } 
    } 

Может ли кто-нибудь предложить, как это можно достичь? Благодарю.

+0

Вы пытались отделить слова с помощью \ r \ n? – Marton

+0

@Marton Пробовал это, не работает. – user3007740

+0

Дубликат http://stackoverflow.com/questions/1706454/c-multiline-text-in-datagridview-control – Marton

ответ

0

Я установил его обработки события DataGridView_CellFormatting и форматирование текста в соответствии с требованиями. Спасибо всем за ваши предложения.

+2

вы можете разместить свое решение? – Smith

1

Вы должны быть в состоянии достигнуть этого, установив WrapMode в DefaultCellStyle из ваших DataGridViewTextBoxColumn в истинный и установка AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells.

+0

Слова на обеих линиях могут содержать пробелы между ними. В таких случаях текст обворачивается в пространстве, а не в новой строке. Мне нужен способ обернуть текст точно в новой строке. – user3007740

0

Попробуйте это. Вам необходимо установить AutoSizeColumnsMode для AllCells.

 foreach (DataGridViewRow dgvrow in dgv.Rows) 
     { 
      if (dgv.CurrentCell.ColumnIndex == dgv.Columns["Name"].Index) 
      { 
       DataGridViewCell dgvcell = (DataGridViewCell)dgvrow.Cells["Name"]; 
       string Name = dgvcell.Value.ToString(); 
       string City = Name.Substring(Name.IndexOf("City:")); 
       Name = Name+"\r\n"+City; 
       dgvcell.Value = Name; 
      } 
     } 

Он будет работать наверняка

+0

Это все еще не работает. Некоторые строки обертываются в пространстве, а некоторые другие - в новой строке, в зависимости от длины слова. В идеале, я хочу, чтобы все было до строки новой строки в любой строке, независимо от длины слова. И то же самое с текстом после новой строки. Благодарю. – user3007740

+0

, тогда сделайте одно: в ячейке valididating возьмите всю ценность ячейки и разделите ее на слова на массив строк. И соедините все слова с помощью «\ r \ n» и установите целую строку в одну ячейку. Он работает –

Смежные вопросы