使用RTF使超链接在RTF文本框中工作

问题描述

我正在尝试使用RTF格式在RTF框中格式化超链接。借助answer,我可以使用基本的格式设置,例如将文本加粗。但是,我无法使RTF格式的超链接正常工作。我找到了建立RTF链接here的示例。但是,当我尝试将其放入“富文本框”(如下所示)时,它将导致我的应用程序崩溃。关于我在这里缺少什么的任何建议?

string my_hyperlink_text = @"{\field{\*\fldinst HYPERLINK \"http://www.google.com/\"}{\fldrslt Google}}"
        
if (rtbControl is RichTextBox & rtbControl.Name == "name_of_control")  // Making sure the control is a RichTextBox
       {
            RichTextBox rtb = rtbControl as RichTextBox;
            rtb.Rtf = my_hyperlink_text;
       }

解决方法

使rtfs正常工作的一种简单方法是用Microsoft Word编写文本,将其复制并粘贴到Wordpad,然后从那里另存为RTF。 需要绕开MS Word,因为写字板虽然在来自其他来源(例如剪贴板)的链接时会正确处理,但不支持在UI中输入链接。此外,MS Word会创建大量的rtf。

通过这种方式创建的rtf文件可以在任何文本编辑器中打开,并且可以在程序中用作字符串常量。

在您的情况下,我想前缀和颜色表可能会丢失并导致问题。

顺便说一句:写字板不过是Windows rtf控件的包装,即与您在代码中使用的控件相同。