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

如何通过编程向WPF RichTextBox中添加表格?

解决WPF RichTextBox插入表格不显示的问题

你的代码已执行但表格不显示,核心问题是缺少TableCell元素,且默认无表格样式导致无法可视化;另外直接追加到Blocks末尾也不符合“光标位置插入”的需求,以下是修复方案:

修改后的InsertTable方法代码

private void InsertTable(object sender, RoutedEventArgs e)
{
    rtb.BeginChange();

    // 创建表格并设置可可视化的样式
    var table = new Table();
    table.CellSpacing = 0;
    table.BorderThickness = new Thickness(1);
    table.BorderBrush = Brushes.Black;

    // 添加3列并设置固定宽度
    for (int i = 0; i < 3; i++)
    {
        var column = new TableColumn();
        column.Width = new GridLength(100);
        table.Columns.Add(column);
    }

    // 创建行组并添加带单元格的行
    var rowGroup = new TableRowGroup();
    table.RowGroups.Add(rowGroup);

    for (int rowIndex = 0; rowIndex < 3; rowIndex++)
    {
        var row = new TableRow();
        rowGroup.Rows.Add(row);

        // 为每行添加3个带内容的单元格
        for (int cellIndex = 0; cellIndex < 3; cellIndex++)
        {
            var cell = new TableCell(new Paragraph(new Run($"Cell {rowIndex+1}-{cellIndex+1}")));
            cell.BorderThickness = new Thickness(0,0,1,1); // 避免重复边框
            cell.Padding = new Thickness(5);
            row.Cells.Add(cell);
        }
    }

    // 在光标位置插入表格
    TextPointer insertionPoint = rtb.CaretPosition;
    if (insertionPoint.Paragraph != null)
    {
        rtb.Document.Blocks.InsertBefore(insertionPoint.Paragraph, table);
    }
    else
    {
        rtb.Document.Blocks.Add(table);
    }

    // 将光标移至表格末尾
    TextPointer tableEnd = table.ContentEnd.GetPositionAtOffset(1, LogicalDirection.Forward);
    rtb.CaretPosition = tableEnd;

    rtb.EndChange();
    Keyboard.Focus(rtb);
}

关键修复点

  • 补充TableCell:TableRow必须包含TableCell才能被渲染,这是原代码最核心的缺失项。
  • 添加可视化样式:给表格和单元格设置边框、内边距、列宽,解决默认无样式导致的“看不到表格”问题。
  • 光标位置插入:通过InsertBefore将表格插入到光标所在段落位置,而非文档末尾,满足需求。
  • 优化光标定位:插入后自动将光标移至表格后方,提升操作流畅度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:07:36