Eine Liste von Web -Links oder lokalen Dateien auf dem System, und dann kann ich natürlich darauf klicken und es wird geöffnet. Es ist auch ein gewisses Styling erforderlich, wie Schriftgewicht und Kugeln usw.
Was ich bisher habe, ist ein RichTextBox mit dem Namen RichTextBoxessources .
Code: Select all
string link2 = "https://whatever.dk";
string name2 = "My Link";
StringBuilder rtf = new StringBuilder();
rtf.Append(@"{\rtf1\ansi");
rtf.Append(@"{\fonttbl\f0\fnil\fcharset0 Calibri;}");
rtf.Append(@"{\colortbl ;\red0\green0\blue255;}");
rtf.Append(@"\viewkind4\uc1\pard\f0\fs20 ");
rtf.Append($@"{{\field{{\*\fldinst HYPERLINK ""{link2}""}}{{\fldrslt{{\ul\cf1 {name2}}}}}}}");
rtf.Append(@"\par}");
richTextBoxRessources.Rtf = rtf.ToString();
Code: Select all
richTextBoxRessources.LinkClicked += richTextBoxRessources_LinkClicked;
< /code>
Und dann sein Code: < /p>
private void richTextBoxRessources_LinkClicked(object sender, LinkClickedEventArgs e)
{
Debug.WriteLine("Break-point set here");
}
RTF -Code in RichTextBox einfügen < /code> < /li>
< /ol>
Dies macht den Web -Link tatsächlich anklickbar - aber nur den ersten Link!? Alle anderen Links sehen nach normalen Links aus, aber es passiert nichts, wenn ich auf sie klicke - nur der erste Link funktioniert. < /P>
Dies ist mein Testcode dafür: < /p>
Code: Select all
StringBuilder rtf = new StringBuilder();
rtf.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\nouicompat\\deflang1033{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Calibri; } {\\f1\\fnil\\fcharset0 Calibri; } {\\f2\\fnil\\fcharset2 Symbol; } }");
rtf.Append("{\\colortbl;\\red0\\green0\\blue255;\\red5\\green99\\blue193; }");
rtf.Append("{\\*\\generator Riched20 10.0.19041}\\viewkind4\\uc1");
rtf.Append("\\pard\\widctlpar\\sa160\\sl252\\slmult1\\kerning2\\f0\\fs22\\lang1030 Header 1:\\par");
rtf.Append("");
rtf.Append("\\pard{\\pntext\\f2\\'B7\\tab}{\\*\\pn\\pnlvlblt\\pnf2\\pnindent0{\\pntxtb\\'B7}}\\widctlpar\\fi-360\\li720\\sa160\\sl252\\slmult1 {{\\field{\\*\\fldinst{HYPERLINK \"https://link1\"}}{\\fldrslt{\\ul\\cf1\\cf2\\ul Link 1}}}}\\f0\\fs22\\par");
rtf.Append("{\\pntext\\f2\\'B7\\tab}{{\\field{\\*\\fldinst{HYPERLINK \"https://link2\"}}{\\fldrslt{\\ul\\cf1\\cf2\\ul Link 2}}}}\\f0\\fs22\\par");
rtf.Append("");
rtf.Append("\\pard\\widctlpar\\sa160\\sl252\\slmult1 Header 2:\\par");
rtf.Append("");
rtf.Append("\\pard{\\pntext\\f2\\'B7\\tab}{\\*\\pn\\pnlvlblt\\pnf2\\pnindent0{\\pntxtb\\'B7}}\\widctlpar\\fi-360\\li720\\sa160\\sl252\\slmult1 {{\\field{\\*\\fldinst{HYPERLINK \"https://link3\"}}{\\fldrslt{\\ul\\cf1\\cf2\\ul Link 3}}}}\\f0\\fs22\\par");
rtf.Append("");
rtf.Append("\\pard\\sa200\\sl276\\slmult1\\kerning0\\f1\\lang6\\par");
rtf.Append("}");
richTextBoxRessources.Rtf = rtf.ToString();
Dies ist mein Code:
Code: Select all
private async void InitializeWebView()
{
await webView21.EnsureCoreWebView2Async(null);
// Handle navigation events
webView21.CoreWebView2.NavigationStarting += (sender, args) =>
{
Debug.WriteLine("NavigationStarting: " + args.Uri);
if (args.Uri.StartsWith("file://", StringComparison.OrdinalIgnoreCase))
{
args.Cancel = true;
string localPath = new Uri(args.Uri).LocalPath;
Process.Start(new ProcessStartInfo(localPath) { UseShellExecute = true });
}
};
// HTML
string htmlContent = @"
Local File Test
Try opening local files:
[list]
[url=file:///C:\\GlDifxCmd.log]Open local log file[/url]
[*][url=https://www.google.com]Google[/url]
[/list]
";
webView21.NavigateToString(htmlContent);
}