カスタムJabberIMクライアントがあり、リンクに問題があります。http://something.comのようなものを入力すると、メッセージウィンドウにリンクとして表示されます。メッセージウィンドウは標準のc#テキストボックスです。クリックしてWebページを開くことができるように、リンクとしてマークする方法はありますか?
ありがとう
カスタムJabberIMクライアントがあり、リンクに問題があります。http://something.comのようなものを入力すると、メッセージウィンドウにリンクとして表示されます。メッセージウィンドウは標準のc#テキストボックスです。クリックしてWebページを開くことができるように、リンクとしてマークする方法はありますか?
ありがとう
RichTextBox は URL を検出できますが、通常の TextBox では検出できないと思います。ただし、入力には常に単一行の RichTextBox を使用できます。
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 は下線付きのハイパーリンクとして自動的に表示されます。