6

カスタムJabberIMクライアントがあり、リンクに問題があります。http://something.comのようなものを入力すると、メッセージウィンドウにリンクとして表示されます。メッセージウィンドウは標準のc#テキストボックスです。クリックしてWebページを開くことができるように、リンクとしてマークする方法はありますか?

ありがとう

4

2 に答える 2

11

RichTextBox は URL を検出できますが、通常の TextBox では検出できないと思います。ただし、入力には常に単一行の RichTextBox を使用できます。

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

于 2008-11-26T15:16:52.387 に答える
5

Jamie Garcia 氏によって提供されたソリューションは優れたものであり、提供された MSDN 記事のリンクで参照されています。ただし、この解決策がかなり前に提案されたことを考えると、更新された解決策を提案したいと思います。

MSDN ソリューションは Internet Explorer を起動し、URL をプログラムに直接渡します。ユーザーのデフォルトの Web ブラウザー内でリンクを起動する方が、より良い (そしてよりユーザー中心の) アプローチだと思います。

コントロールの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")));
}

MSDNの記事にあるように、コントロールのDetectUrlsプロパティはRichTextBox既定で有効になっているため、有効な http/https URL は下線付きのハイパーリンクとして自動的に表示されます。

于 2016-02-07T22:24:34.940 に答える