正确显示超链接和标签
本文关键字:标签 超链接 显示 | 更新日期: 2023-09-27 18:05:20
描述、代码和UI
我在c#/.net 4.0 winforms应用程序中创建了一个RichTextBox (RTB)。
this.richTextBoxProtokoll = new System.Windows.Forms.RichTextBox();
//
// richTextBoxProtokoll
//
this.richTextBoxProtokoll.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.richTextBoxProtokoll.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.richTextBoxProtokoll.Location = new System.Drawing.Point(12, 332);
this.richTextBoxProtokoll.Name = "richTextBoxProtokoll";
this.richTextBoxProtokoll.Size = new System.Drawing.Size(461, 286);
this.richTextBoxProtokoll.TabIndex = 42;
this.richTextBoxProtokoll.Text = "";
this.richTextBoxProtokoll.Visible = false;
this.richTextBoxProtokoll.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxProtokoll_LinkClicked);
RichTextBox DetectUrls
属性的默认值为true,所以我没有设置这个属性。
之后,我给控件分配了一些rtf数据,使其看起来像这样(对不起:文本是德语):——对不起,我最多可以添加2个链接——
重要部分为图中黄色标记部分:pic01
我在rtf-data中添加了一个link标签。这个链接标签由一个标签(命名为:Link)和到其他东西的实际链接组成,在我的例子中是一个文件(file:somepath)。
几乎一切都很好。这个链接可以工作了,因为我们添加了LinkClicked-EventHandler。
我的期望:
我所期望的是这样的:pic02
我已经定义了一个标签(名为:Link),它必须被打印。链接本身必须是静默的。它不能在RTB中显示。
如果我将RTB的rtf-text复制到一个文件中并打开它(例如用写字板),它会显示出我期望的结果:——对不起,我最多只能添加2个链接——
这是rtf代码:{'rtf1'ansi'ansicpg1252'deff0'deflang1031{'fonttbl{'f0'fswiss'fprq2'fcharset0 Verdana;}}{'colortbl;'red255'green0'blue0;'red0'green150'blue0;'red0'green0'blue250;'red0'green0'blue250}{'*'generator Msftedit 5.41.15.1507;}'viewkind4'uc1'pard'f0'fs16'cf0 'par {'b'cf0 Start der Dimitra-IntegrationTests}'par 'cf0 27.05.2014 12:31:26'par 'cf0 'par 'cf0 'par 'cf0 -------------------------------'par 'cf0 --------- Kategorie: {'b'cf0 Adapter} 'cf0 'par 'cf0 -------------------------------'par 'cf0 'par 'cf0 'par 'cf0 Es wird folgender Test ausgeführt: {'b'cf0 Test009_Wait_5_sec} 'cf0 'par 'cf0 'par 'cf0 Es wird folgender Teil-Test ausgeführt: {'b'cf0 Teil01}'par 'cf0 Es werden die Ergebnisse verglichen: {'b'cf2 --> ok }'cf0 {'field{'*'fldinst{HYPERLINK "file:C:''''TS_Projekte''''DataAdaption''''Dimitra''''Tests''''IntegrationTests''''_Results''''Erich.Desktop''''Adapter''''Test009_Wait_5_sec''''Teil01''''Showdiff_TeilResults.cmd"}}{'fldrslt{'cf0'lang1033 Link}}}'cf0 'par 'cf0 'par 'cf0 Übersicht über die {'b'cf0 aktuelle } 'cf0 Test-Serie:'par 'cf0 Gesamtanzahl an Teil-Tests: 1'par 'cf0 Anzahl Teil-Tests mit ok: {'b'cf2 1}'cf0 'par 'cf0 Anzahl Teil-Tests mit diffs: {'b'cf2 0}'cf0 'par }
我的问题:
- 我的文本代码有什么问题。但只是RTB错误,写字板没有错误?
- 如何正确工作?
- 可能是MS-RTB的bug ?如果有:是否有可用的错误修复?
:
有人告诉我,我的rtf代码可以在WPF-Richtext-Control中正常工作。
RichTextBox只是Win32 RichEdit控件的包装器,因此它的功能可以通过添加必要的包装器来扩展,以发送RichEdit控件设置链接样式所需的消息。
作为扩展RTF控件的替代方案,您是否有可能放弃RTF?与其继续与这种丑陋的技术斗争,为什么不使用HTML呢?您可以使用WebBrowser控件或其他替代方法在WinForms中显示HTML。