2013-12-13 56 views
1

我試圖在DataGridView Cell中的多行顯示文本。我不想使用Wrap模式,因爲文本不是很長。我只想在第一行顯示第一個字,在下一個字顯示第二個字。注意第二行的粗體文本。DataGridView Cell中的多行文本


名稱:ABC
市:XYZ

我嘗試使用Environment.NewLine和 「\ r \ n」,但既沒有工作做。

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

您應該能夠通過設置你的真實DataGridViewTextBoxColumnDefaultCellStyleWrapMode,並設置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

然後做一件事,在cellvalidating中取出整個單元格的值並將它們分成單詞到字符串數組。並用「\ r \ n」加入所有單詞並將整個字符串設置爲同一單元格。它的工作原理 –

相關問題