我在c#/。net 4.0 Winforms-application中创建了一个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个链接 -
importend部分是此图片中的黄色标记部分:pic01
我在rtf-data中添加了一个link-tag。这个link-tag包含一个标签(名为:Link)和其他东西的真实链接,在我的情况下是一个文件(file:somepath)。
现在一切都很好。该链接有效,因为已添加了LinkClicked-EventHandler。
我所期望的是这样的:pic02
我已经定义了一个必须打印的标签(名为:Link)。链接本身必须保持沉默。它没有在RTB中显示。
如果我将RTB的rtf文本复制到一个文件并打开它,例如使用写字板,它会显示,我的期望: - 抱歉,我最多可以添加2个链接 -
{\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 }
此外:
有人告诉我,我的rtf代码可以在WPF-Richtext-Control中正常工作。
答案 0 :(得分:0)
RichTextBox只是Win32 RichEdit控件的包装器,因此可以通过adding the necessary wrappers扩展其功能,以发送RichEdit控件设置链接样式所需的消息。
答案 1 :(得分:0)
作为扩展RTF控件的替代方法,您是否可以放弃RTF?而不是继续与这种坦率的可怕技术作斗争,为什么不使用HTML?您可以使用WebBrowser control或the alternatives中的一个在WinForms中显示HTML。