You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataGridView中完整显示RichTextBox中的文本?

解决RichTextBox文本完整显示到DataGridView行的问题

嘿,这个问题我之前帮不少开发者踩过坑,核心就是让DataGridView的单元格既能自动换行,又能根据内容自适应行高,这样RichTextBox里的长文本、带换行的内容就能完整展示了。下面给你几个实用的方案:

方案1:开启自动换行+自适应行高(最省心的方法)

这是最常用的快速解决方式,只需要设置几个DataGridView的属性就行:

  1. 先让目标列的单元格支持自动换行:
    // 假设你的目标列是第0列,也可以通过列名获取(比如dataGridView1.Columns["ContentCol"])
    dataGridView1.Columns[0].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    
  2. 接着设置行高自动匹配单元格内容:
    // 让所有行的高度自动适应内容,包括换行后的高度
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
    // 要是不想让用户手动调整行高,可以加上这行
    dataGridView1.AllowUserToResizeRows = false;
    
  3. 最后确保列宽足够(列太窄的话,换行后还是可能显示不全):
    // 让列自动适应内容宽度,或者手动设置一个合适的固定宽度
    dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
    

方案2:手动计算行高(自动模式失效时用)

有时候如果文本里有特殊格式(比如RichTextBox里的特殊换行符),自动行高可能不准,这时候可以手动计算文本高度来设置行高:

// 遍历DataGridView的每一行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (!row.IsNewRow)
    {
        // 获取单元格里的文本,避免空值报错
        string cellText = row.Cells[0].Value?.ToString() ?? string.Empty;
        // 创建Graphics对象来测量文本高度
        using (Graphics g = dataGridView1.CreateGraphics())
        {
            // 拿到单元格的实际可用宽度(减去内边距)
            float cellWidth = row.Cells[0].Size.Width - dataGridView1.RowTemplate.DefaultCellStyle.Padding.Horizontal;
            // 测量文本在指定宽度下的总高度
            SizeF textSize = g.MeasureString(cellText, row.Cells[0].Style.Font, (int)cellWidth);
            // 设置行高,加上上下内边距保证不挤
            row.Height = (int)Math.Ceiling(textSize.Height) + dataGridView1.RowTemplate.DefaultCellStyle.Padding.Vertical;
        }
    }
}

方案3:确保RichTextBox的文本完整提取

有时候问题出在提取文本的步骤,比如只拿到了部分内容,那肯定显示不全。要确保拿到完整的纯文本:

// 从RichTextBox获取完整纯文本,包括所有换行符
string fullText = richTextBox1.Text;
// 把完整文本赋值给DataGridView的目标单元格
dataGridView1.Rows[0].Cells[0].Value = fullText;

如果RichTextBox里有RTF格式的内容,但你只需要纯文本的话,Text属性就足够了;要是想保留格式,那得用自定义的富文本DataGridView单元格,这个复杂度更高,一般纯文本场景用上面的方法就够了。

小提醒

  • 如果你的DataGridView是绑定数据源的,记得在绑定完成后再设置行高自动调整的属性,否则可能不生效。
  • 要是文本里有很多连续空格或者制表符,可以先做下清理,避免行高异常。

内容的提问来源于stack exchange,提问作者iuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:39:13