プログラム 技術

Windowsフォームアプリでリッチテキスト内にリンクを貼る

今回はWindowsフォームに配置したリッチテキスト内にリンクを貼る方法の紹介となります
基本的にはMSサイトに記載されている通りの内容となるのですが、一部実装してみて分かったことも含めています

名称バージョン
C#9.0
MSサイト
RichTextBox コントロールを使用して Web-Style リンクを表示する - Windows Forms | Microsoft Learn
RichTextBox コントロールを使用して Web-Style リンクを表示する - Windows Forms | Microsoft Learn

Windows フォーム コントロールを使用して RichTextBox コントロールを使用して Web スタイルのリン ...

MSサイトへ

リッチテキストの設定を確認する

基本的にリッチテキスト作成時のデフォルト設定で True となっているとは思いますが、
念のため 動作 > DetectUrls の値が True となっていることを確認しておきます

実際にリンクテキストを設定する

上記の設定をしてならば、後はリッチテキスト上にURL形式のテキストを表示すればよく見るリンク表示がされます

ただ、これだけだとそのリンクをクリックしても何も起きないので、クリックした際のイベントを登録する必要があります
今回はURLリンクをクリックしたら、そのURLをEdgeで開くようにするために『microsoft-edge:』という文言を付けているのでこちらに関しては適宜修正をしてください

// どちらかの方法でリンククリックイベントをリッチテキストに登録します

// 方法1 関数を別で作成し登録する方法
richTextBox1.LinkClicked += richTextBox1_LinkClicked;

private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs ev)
{
    System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
    {
        FileName = $"microsoft-edge:{ev.LinkText}",
        UseShellExecute = true
    });
}

// 方法2 ラムダ式で登録する方法
richTextBox1.LinkClicked += (s, ev) =>
{
    System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
    {
        FileName = $"microsoft-edge:{ev.LinkText}",
        UseShellExecute = true
    });
};

これでリッチテキストにURLを仕込むことができました

ファイルパスも使える

補足となりますが、上記と同じような実装でURLではなくファイルパスを設定することができます
ただ、注意が必要なのですがファイルパス内に日本語が含まれると正しく動作しないので注意してください

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社|ADS Co., Ltd.
アドバンスド・ソリューション株式会社|ADS Co., Ltd.

Microsoft 365/SharePoint/Power Platform/Azure による DX コンサル・シス ...

サイトへ移動

PR

-プログラム, 技術
-,