Links in c# textbox

后端 未结 2 1852
走了就别回头了
走了就别回头了 2021-01-12 20:42

I have a custom Jabber IM client and I\'m having a problem with links. When something like http://something.com is entered I want it to show up as a link in the message win

2条回答
  •  时光说笑
    2021-01-12 21:19

    The solution provided by Mr Jamie Garcia is a great one, referenced by the supplied MSDN article link. However, given that this solution was proposed so long ago, I would like to propose an updated one.

    The MSDN solution launches Internet Explorer and passes the URL to the program directly. I feel a better (and more user-centered) approach would be to launch the link within the user's default web browser.

    We still set up an event handler for the LinkClicked event of our RichTextBox control, but with a few changes. Here is the complete code:

    // 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")));
    }
    

    As the MSDN article states, the DetectUrls property of the RichTextBox control is enabled by default, so any valid http/https urls will automatically appear as underlined hyperlinks.

提交回复
热议问题