RichTextBox의 RTF 파일의 하이퍼 링크가 깨졌습니다
-
22-07-2019 - |
문제
나는 a를 사용하고있다 RichTextBox
단일 하이퍼 링크가 포함 된 RTF 파일을 표시합니다. 링크 텍스트는 URL이 아닙니다 (대상 ~이다 유효한 URL). RTF는 단어로 만들어졌습니다. Word와 WordPad는 모두 링크를 올바르게 인식합니다 (WordPad는 링크를 시작하지 않지만 적절한 핸드 커서를 보여줍니다).
RTF를 a에로드하면 RichTextBox
링크는 올바르게 형식화 된 것으로 보이지만 (파란색과 밑줄이 표시) 링크처럼 작동하는 대신 커서가 링크 위로 움직일 때 i-beam으로 남아 있습니다. LinkClicked
이벤트는 발사되지 않으며 실제로 링크 후 각도 브래킷 사이의 대상을 보여줍니다 (이것은 올바른 것 같습니다). 링크 텍스트는 URL이 아니기 때문에 DetectUrls
여기서 도움이되지 않습니다.
그 이유가 있습니까? RichTextBox
이러한 링크를 올바르게 처리하지 않거나 예상대로 작동하도록하는 방법이 없습니까?
코드는 다음과 같습니다.
TipView.Rtf = tips[tipIndex];
// I've also tried TipView.LoadFile, with identical result
문제를 재현하려면 텍스트가 URL이 아니지만 유효한 URL을 대상으로 한 링크가 포함 된 Word (2000을 사용하고 있음)가있는 RTF 문서를 만듭니다. RichTextBox
(C# Express 2008에서 .NET 2.0을 사용하고 있습니다).
해결책
하이퍼 링크를 지원하려면 필요합니다 RICHEDIT50W
"Rich 편집"버전.
그에 대한:
- .NET Framework 4.7을 사용하여 사용하십시오
RICHEDIT50W
기본적으로RichTextBox
. 기존 버전의 .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는 유니 코드 수학 영숫자 기호를 표시 할 수 없습니다.