Windows フォームの RichTextBox コントロールでは、Web リンクに色と下線を付けて表示できます。 リンクがクリックされたときにブラウザー ウィンドウを開いて、リンク テキストで指定されている Web サイトを表示するように、コードを記述できます。
RichTextBox コントロールで Web ページにリンクするには
Text プロパティに、有効な URL ("https://www.microsoft.com/japan" など) を含む文字列を設定します。
DetectUrls プロパティが true (既定値) に設定されていることを確認します。
Process オブジェクトの新しいグローバル インスタンスを作成します。
ブラウザーに目的のテキストを送信する LinkClicked イベントのイベント ハンドラーを記述します。
次の例では、LinkClicked イベントで Internet Explorer のインスタンスが開き、RichTextBox コントロールの Text プロパティに指定された URL にアクセスします。 この例では、フォームに RichTextBox コントロールがあると仮定しています。
セキュリティに関するメモ
Process.Start メソッドを呼び出すと権限の不足により SecurityException 例外が発生します。 詳細については、「コード アクセス セキュリティの基礎」を参照してください。
Public p As New System.Diagnostics.Process Private Sub RichTextBox1_LinkClicked _ (ByVal sender As Object, ByVal e As _ System.Windows.Forms.LinkClickedEventArgs) _ Handles RichTextBox1.LinkClicked ' Call Process.Start method to open a browser ' with link text as URL. p = System.Diagnostics.Process.Start("IExplore.exe", e.LinkText) End Sub
public System.Diagnostics.Process p = new System.Diagnostics.Process(); private void richTextBox1_LinkClicked(object sender, System.Windows.Forms.LinkClickedEventArgs e) { // Call Process.Start method to open a browser // with link text as URL. p = System.Diagnostics.Process.Start("IExplore.exe", e.LinkText); }
public: System::Diagnostics::Process ^ p; private: void richTextBox1_LinkClicked(System::Object ^ sender, System::Windows::Forms::LinkClickedEventArgs ^ e) { // Call Process.Start method to open a browser // with link text as URL. p = System::Diagnostics::Process::Start("IExplore.exe", e->LinkText); }
(Visual C++) プロセス p を初期化する必要があります。そのためには、フォームのコンストラクターに次のステートメントを挿入します。
p = gcnew System::Diagnostics::Process();
(Visual C#、Visual C++) フォームのコンストラクターに次のコードを挿入してイベント ハンドラーを登録します。
this.richTextBox1.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler (this.richTextBox1_LinkClicked);
this->richTextBox1->LinkClicked += gcnew System::Windows::Forms::LinkClickedEventHandler (this, &Form1::richTextBox1_LinkClicked);
作成したプロセスを実行したら、すぐにそれを停止することが重要です。 上に示したコードを参考にして、プロセスを停止するコードを次のように記述できます。
Public Sub StopWebProcess() p.Kill() End Sub
public void StopWebProcess() { p.Kill(); }
public: void StopWebProcess() { p->Kill(); }