문제

나는 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는 유니 코드 수학 영숫자 기호를 표시 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top