【问题标题】:RichTextEditBox and LinkLabel winforms c#RichTextEditBox 和 LinkLabel winforms c#
【发布时间】:2018-03-22 05:02:18
【问题描述】:

我正在使用 Windows 窗体 RichTextEditBox。我将一个 RTF 文件加载到控件中。然后我设置以下代码。

 int indexToText = rteb.Find("here");

 LinkLabel link = new LinkLabel();
 link.Text = "here";
 link.LinkBehavior = LinkBehavior.AlwaysUnderline;
 link.LinkClicked += new 
     LinkLabelLinkClickedEventHandler(this.link_LinkClicked);

 LinkLabel.Link data = new LinkLabel.Link();
 data.LinkData = "Sending Report Results to Multiple Recipients.pdf";
 link.Links.Add(data);

 link.AutoSize = true;
 link.Location = rteb.GetPositionFromCharIndex(indexToText);
 link.Height = 40;
 link.Width = 60;
 link.ForeColor = Color.Blue;
 rteb.Controls.Add(link);

当应用程序运行时,“这里”这个词是蓝色的,但我没有下划线,当我尝试点击这个词时,我的点击事件不会触发。我在这里错过了什么?

【问题讨论】:

  • 使用 LinkLabel 提供 URL,类似于您在浏览器中使用的 URL。存储在未知目录中的 pdf 文件无法帮助浏览器显示它。考虑 file://c:\foo\bar\baz.pdf,但也要考虑到您的用户可能不喜欢使用他的浏览器来阅读 pdf 文件。 Process.Start() 是一个不错的选择。
  • 对不起,我没有显示我的 LinkClicked 事件,但我正在使用 Process.Start() 来显示 pdf 文件。但这不是问题。问题是当我点击“这里”这个词时,什么也没有发生。它不像链接。不会触发 LinkClicked 事件。

标签: c# .net winforms richtextbox linklabel


【解决方案1】:

要在LinkLabel 中设置带下划线的链接区域,您应该将LinkArea 属性设置为应显示为链接的范围,例如:

LinkLabel link = new LinkLabel();
link.Text = "here";
link.LinkArea = new LinkArea(0, link.Text.Length);
link.LinkBehavior = LinkBehavior.AlwaysUnderline;

【讨论】:

  • 刚刚添加,但仍然没有任何反应。我点击“这里”这个词,我的 linkClicked 事件没有触发
  • 我试过了。它工作正常,测试起来非常简单:)
  • 我可以看看你的代码吗?我已经尝试了一切,但它并没有为我触发事件。现在我们的示例之间的区别可能是我正在加载一个 microsoft word rtf 文件。
  • 如果要使用Links收藏,可以设置data.Start = 0; data.Length = link.Text.Length;。我也对此进行了测试,效果也很好。
猜你喜欢
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2011-07-15
  • 1970-01-01
相关资源
最近更新 更多