RichTextBox 控件中的表格损坏(自动换行)[重复]

2024-04-11

可能的重复:
为什么 Richtextbox 无法正确显示该表格? https://stackoverflow.com/questions/1928853/why-isnt-the-richtextbox-displaying-this-table-properly

我们在使用 Visual Studio 2008 中的 Windows.Forms.RichTextBox 控件时遇到问题。

我们正在尝试在 Windows 窗体应用程序 (.NET 3.5) 中显示第三方以 RTF 文件形式提供的文本。在此 RTF 文本文件中有一些表格,其中包含跨多行的文本。使用写字板或 Word 2003 打开时,RTF 文件可以正确显示。

但是,当我们将 RTF 文件加载到 RichTextBox 控件中,或将整个文本(包括表格)复制并粘贴到控件中时,表格无法正确显示 - 单元格只是单行,没有换行。

以下是显示确切问题的图像链接:

  • 在写字板中正确显示 http://www.coredumped.de/pics/rtf-good.jpg

  • RichTextBox 控件中显示不正确 http://www.coredumped.de/pics/rtf-bad.jpg

我在 google 上搜索了解决方案和第 3 方 .net RTF 控件,但没有成功。我发现另一个论坛上提出了这个确切的问题,但没有答案(事实上,这就是图像链接的来源),所以我希望堆栈溢出做得更好;-)

我的首选解决方案是使用可以正确呈现 RTF 的代码或第 3 方控件。但是,我怀疑问题在于 RichTextBox 控件仅支持完整 RTF 规范的子集,因此另一种选择是直接修改 RTF 以删除不支持的控制代码或以其他方式修复 RTF 文件本身(在这种情况下,任何信息至于需要删除或修改哪些控制代码将是一个巨大的帮助)。


.NET 的富文本框有很多错误。

在 RTF 中,表格的定义方式实际上与您习惯 HTML 时所期望的完全不同。

HTML:

<table>
<tr>
    <td>Mycell</td>
</tr>
</table>

在 RTF 中,表格只是一系列带有定义行、单元格、边框的控制字的段落。表的开始/结束没有组标记。

RTF:

\trowd\trgraph \cellx1000 Mycell \cell\row\pard\par

如果要在单元格内添加段落,请使用 \par 和控件 \intbl (在表格中)来指示该段落位于表格内。

.NET RTB 只能处理 RTF 控制字的一小部分,并且不支持绝大多数可用命令。从表面上看, \intbl 是它不支持的一长串控制字的一部分,如果它实际上解析了 \par 此时,显示就会被丢弃。

不幸的是,我没有解决方案,但我希望上面的小解释可以帮助您理解这个问题。

不要太相信我的 RTF 样本。它确实有效,但绝对是简单的。您可以从 Microsoft 网站下载 RTF 规范:.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RichTextBox 控件中的表格损坏(自动换行)[重复] 的相关文章

随机推荐