Frage

Ich verwende eine RichTextBox eine RTF-Datei anzuzeigen, die einen einzelnen Hyperlink enthält. Der Link-Text ist kein URL (das Ziel ist eine gültige URL). Die RTF wurde mit Word erstellt. Beide richtig Word und WordPad die Links erkennen (WordPad nicht die Links nicht starten, aber zeigen den entsprechenden Hand-Cursor).

Als ich das RTF in eine RichTextBox laden die Verbindungen korrekt angezeigt (blau und unterstrichen) formatiert, sondern eher als wie ein Link zu verhalten, wenn sich der Cursor bewegt sich über den Link bleibt es ein I-Träger, wird die LinkClicked Ereignis nicht ausgelöst und es zeigt tatsächlich das Ziel zwischen spitzen Klammern nach dem Link (dies nicht korrekt erscheinen). Da der Link-Text nicht eine URL ist, DetectUrls hier nicht helfen.

Gibt es einen Grund, dass RichTextBox nicht richtig diese Links handhaben, oder einen Weg, um sie wie erwartet funktionieren?

Hier ist der Code.

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

Um das Problem zu reproduzieren, ein RTF-Dokument mit Word zu erstellen (Ich verwende 2000) eine Verbindung, deren Text enthält, ist nicht eine URL, sondern zielt auf eine gültige URL, und programmatisch die RTF-Datei in eine RichTextBox laden (ich bin .NET 2.0 in C # Express 2008 verwendet wird).

War es hilfreich?

Lösung

Hyperlinks zu unterstützen, müssen Sie RICHEDIT50W Version von "Rich edit" .

Für das:

  • Verwenden Sie entweder .NET Framework 4.7, die RICHEDIT50W nativ in RichTextBox verwendet.
  • In älteren Versionen von .NET Framework, können Sie ändern RichTextBox RICHEDIT50W zu verwenden:

    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;
            }
        }
    }
    

Basierend auf RichTextBox Auswahl markieren und RichTextBox nicht alphanumerische Zeichen Unicode Mathematical Anzeige .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top