c#文本框中的链接

bey*_*rss 6 c# textbox hyperlink

我有一个自定义的Jabber IM客户端,我遇到链接问题.当输入类似http://something.com的内容时,我希望它在消息窗口中显示为链接.消息窗口是标准的c#文本框.有没有办法将其标记为链接,以便可以单击并打开网页?

谢谢

Jai*_*cia 10

RichTextBox可以检测到URL,我不认为常规TextBox可以检测到它们.但是,您始终可以使用单行RichTextBox作为输入.

http://msdn.microsoft.com/en-us/library/f591a55w.aspx

  • 超过4年后,你的答案仍在帮助人们!谢谢. (4认同)

Lem*_*eed 6

Jamie Garcia 先生提供的解决方案非常好,可通过提供的 MSDN 文章链接引用。然而,鉴于这个解决方案是很久以前提出的,我想提出一个更新的解决方案。

MSDN解决方案启动 Internet Explorer 并将 URL 直接传递给程序。我认为更好(并且更以用户为中心)的方法是在用户的默认网络浏览器中启动链接。

LinkClicked我们仍然为控件的事件设置一个事件处理程序RichTextBox,但进行了一些更改。这是完整的代码:

// Event raised from RichTextBox when user clicks on a link:
private void richTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
{
    LaunchWeblink(e.LinkText);
}

// Performs the actual browser launch to follow link:
private void LaunchWeblink(string url)
{
    if (IsHttpURL(url)) Process.Start(url);
}

// Simple check to make sure link is valid,
// can be modified to check for other protocols:
private bool IsHttpURL(string url)
{
    return
        ((!string.IsNullOrWhiteSpace(url)) &&
        (url.ToLower().StartsWith("http")));
}
Run Code Online (Sandbox Code Playgroud)

正如MSDN 文章所述,默认情况下启用DetectUrls该控件的属性,因此任何有效的 http/https url 将自动显示为带下划线的超链接。RichTextBox

  • _“RichTextBox 控件的 DetectUrls 属性默认启用,因此任何有效的 http/https url 都会自动显示为带下划线的超链接。”_ LinkClicked 事件只会发生在带下划线的超链接上(由控件验证),那么为什么我们需要证实? (2认同)