我知道richtextboxes可以检测链接(如http://www.yahoo.com),但有没有一种方法可以让我添加链接到它,看起来像文本,但它的链接?比如在哪里可以选择链接的标签?例如,它不是显示为http://www.yahoo.com,而是显示为Click here to go to yahoo
编辑:忘记了,im使用windows窗体
编辑:有没有更好的东西可以用(比如更容易格式化)?
我知道richtextboxes可以检测链接(如http://www.yahoo.com),但有没有一种方法可以让我添加链接到它,看起来像文本,但它的链接?比如在哪里可以选择链接的标签?例如,它不是显示为http://www.yahoo.com,而是显示为Click here to go to yahoo
编辑:忘记了,im使用windows窗体
编辑:有没有更好的东西可以用(比如更容易格式化)?
6条答案
按热度按时间pgx2nnw81#
当然,通过调用一些WIN32功能到您的控件中是可能的,但如果您正在寻找一些标准方法,请查看这篇文章:Create hyperlink in TextBox control
有一些关于不同的整合方式的讨论。
问候语
更新1:最好的方法是遵循这个方法:http://msdn.microsoft.com/en-us/library/f591a55w.aspx
因为RichText框控件为“DetectUrls”提供了一些功能。然后你可以很容易地处理点击的链接:
你可以通过扩展基类来简单地创建你自己的RichTextBox控件-在那里你可以覆盖你需要的方法,例如DetectUrls。
x4shl7ld2#
这里你可以找到一个通过linkLabel在rich Textbox中添加链接的例子:
下面是处理程序:
4szc88ey3#
我发现了一种可能不是最优雅的方法,但它只是几行代码并完成了这项工作。也就是说,该想法是通过字体变化来模拟超链接外观,并且通过检测鼠标指针在什么位置上来模拟超链接行为。
代码:
为了改进代码,可以创建一种优雅的方式来将多个“热文本”字符串Map到它们自己的链接URL(可能是
Dictionary<K, V>
)。另一个改进是将RichTextBox
子类化,以封装上面代码中的功能。jchrr9hc4#
许多月后,.NET(Core)* 的解决方案,至少是.NET 6.0(可能更早)-对于 .NET Framework(其最新版本是4.8),您仍然需要其他解决方案之一:
.Rtf
属性现在可以识别RTF格式的超链接;例如,以下呈现为:这是一个真正的RTF超链接:Example Link
dojqjjoe5#
标准的RichTextBox控件(假设你使用的是Windows窗体)公开了一组相当有限的功能,所以不幸的是,你需要做一些Win32互操作来实现这一点(沿着SendMessage(),CFM_LINK,EM_SETCHARFORMAT等线路)。
您可以在SO上找到有关如何在this answer中执行此操作的更多信息。
llmtgqce6#
多年前的richtextbox从来不需要超链接。把这个一起去掉。我在与外部设备目标进行异步串行通信的Windows窗体应用程序中使用is作为智能终端仿真器。
移除ilink,因为此处不需要。