提问者:小点点

DataGridView单元格中的多行文本


我正在尝试在DataGridView单元格中多行显示文本。我不想使用换行模式,因为文本不是很长。我只想在第一行显示第一个单词,在下一行显示第二个单词,就像这样。注意第二行的粗体文字。

名称: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;
            }
        }
    }

有人能建议如何实现这一点吗?谢了。


共3个答案

匿名用户

您应该可以通过将DataGridViewTextBoxColumnDefaultCellStyleWrapMode设置为true,并设置AutoSizerowsMode=DataGridViewAutoSizerowsMode.AllCells来实现这一点。

匿名用户

这对我很有效:

dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; 
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells; 

匿名用户

试试这个。。您需要将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;
            }
        }

这肯定会奏效的