簡體   English   中英

RichTextBox中RTF文件中的超鏈接斷開

[英]Broken hyperlinks in RTF file in RichTextBox

我正在使用RichTextBox來顯示RTF文件,其中包含一個超鏈接。 鏈接文本不是URL(目標有效的URL)。 RTF是使用Word創建的。 Word和寫字板都能正確識別鏈接(寫字板不會啟動鏈接,但會顯示相應的手形光標)。

當我將RTF加載到RichTextBox ,鏈接顯示格式正確(藍色和下划線),但不是表現得像鏈接,當光標在鏈接上移動它仍然是工字梁時, LinkClicked事件將不會觸發,它實際上在鏈接后顯示尖括號之間的目標(這似乎不正確)。 由於鏈接文本不是URL,因此DetectUrls在此處沒有幫助。

有沒有理由說RichTextBox沒有正確處理這些鏈接,或者是一種讓它們按預期工作的方法?

這是代碼。

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

要重現此問題,請使用Word(我正在使用2000)創建一個RTF文檔,其中包含一個文本不是URL但是以有效URL為目標的鏈接,並以編程方式將.rtf文件加載到RichTextBox (我使用的是.NET) 2.0 in C#Express 2008)。

要支持超鏈接,您需要RICHEDIT50W版本的“富編輯”

為了那個原因:

  • 使用.NET Framework 4.7,它在RichTextBox本機使用RICHEDIT50W
  • 在舊版本的.NET Framework中,您可以修改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選擇突出顯示RichTextBox無法顯示Unicode數學字母數字符號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM