Pergunta

Eu estou usando um RichTextBox para exibir um arquivo RTF, que inclui um único hiperlink. O texto da ligação não é um URL (o alvo é uma URL válida). O RTF foi criado com o Word. Word e WordPad reconhecer corretamente as ligações (O WordPad não iniciar as ligações, mas mostra o cursor mão apropriado).

Quando eu carregar o RTF em um RichTextBox os links aparecem formatado corretamente (azul e sublinhado), mas ao invés de se comportar como um link, quando o cursor se move sobre o link continua a ser uma viga, o evento LinkClicked não irá fogo , e ele realmente mostra o alvo entre colchetes após o link (isso não parece correto). Uma vez que o texto da ligação não é um URL, DetectUrls não ajuda aqui.

Existe uma razão que RichTextBox não lidar correctamente com estas ligações, ou uma maneira de fazê-los funcionar como esperado?

Aqui está o código.

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

Para reproduzir o problema, crie um documento RTF com Word (estou usando 2000) contendo um link de cujo texto não é um URL mas alvos uma URL válida, e programaticamente carregar o arquivo .rtf em um RichTextBox (eu sou usando .NET 2.0 em C # Express 2008).

Foi útil?

Solução

Para hyperlinks de apoio, você precisa RICHEDIT50W versão de "rich editar" .

Para que:

  • De qualquer uso .NET Framework 4.7, que usa RICHEDIT50W nativamente no RichTextBox.
  • Em versões anteriores do .NET Framework, você pode modificar RichTextBox ao uso 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;
            }
        }
    }
    

Com base RichTextBox Seleção Destaque e RichTextBox não pode exibir Unicode matemáticos símbolos alfanuméricos .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top