代码之家  ›  专栏  ›  技术社区  ›  snarf

RichTextBox中RTF文件中断开的超链接

  •  6
  • snarf  · 技术社区  · 16 年前

    RichTextBox 有效的URL)。RTF是用Word创建的。Word和写字板都能正确识别链接(写字板不会启动链接,但会显示相应的手动光标)。

    当我将RTF加载到 多格式文本框 LinkClicked 事件不会触发,它实际上显示链接后尖括号之间的目标(这似乎不正确)。由于链接文本不是URL, DetectUrls

    这有什么原因吗 多格式文本框 没有正确处理这些链接,或者没有一种方法使它们按预期工作?

    这是代码。

    TipView.Rtf = tips[tipIndex];
    // I've also tried TipView.LoadFile, with identical result
    

    为了重现这个问题,使用Word(我使用的是2000)创建一个RTF文档,其中包含一个链接,该链接的文本不是URL,而是一个有效的URL,然后通过编程将.RTF文件加载到 多格式文本框 (我在C#Express 2008中使用.NET2.0)。

    1 回复  |  直到 8 年前
        1
  •  6
  •   Martin Prikryl    7 年前

    要支持超链接,您需要 RICHEDIT50W version of "rich edit"

    为此:

    • 或者使用.NETFramework4.7,它使用 土生土长 RichTextBox .
    • 使用 RICHEDIT50W :

      public class ExRichText : RichTextBox
      {
          [DllImport("kernel32.dll", EntryPoint = "LoadLibraryW",
                     CharSet = CharSet.Unicode, SetLastError = true)]
          private static extern IntPtr LoadLibraryW(string s_File);
      
          protected override CreateParams CreateParams
          {
              get
              {
                  var cp = base.CreateParams;
                  LoadLibraryW("MsftEdit.dll");
                  cp.ClassName = "RichEdit50W";
                  return cp;
              }
          }
      }
      

    基于 RichTextBox Selection Highlight RichTextBox cannot display Unicode Mathematical alphanumeric symbols .

    推荐文章