none
RichTextBoxにハイパーリンクを表示し、それをクリックしてリンクを表示したいと思います。 RRS feed

  • 質問

  • いつもお世話になります。
    VisualC#2010、Windows7での動作について質問があります。
    RichTextBox(WPF)にハイパーリンクを表示し、それをクリックしてリンクを表示したいと思います。
    http://msdn.microsoft.com/ja-jp/library/aa970779.aspx?ppud=4
    を参考に、

    StackPanel myStackPanel = new StackPanel();

    // Create a FlowDocument to contain content for the RichTextBox.
    FlowDocument myFlowDoc = new FlowDocument();

    // Create a Run of plain text and some bold text.
    Run myRun = new Run("This is flow content and you can ");
    Bold myBold = new Bold(new Run("edit me!"));

    Hyperlink MyLink = new Hyperlink();
    MyLink.Inlines.Add("http://www.msdn.com");
    MyLink.NavigateUri = new Uri("http://www.msdn.com");


    // Create a paragraph and add the Run and Bold to it.
    Paragraph myParagraph = new Paragraph();
    myParagraph.Inlines.Add(myRun);
    myParagraph.Inlines.Add(myBold);
    myParagraph.Inlines.Add(MyLink);

    // Add the paragraph to the FlowDocument.
    myFlowDoc.Blocks.Add(myParagraph);

    RichTextBox myRichTextBox = new RichTextBox();

    // Add initial content to the RichTextBox.
    myRichTextBox.Document = myFlowDoc;

    myStackPanel.Children.Add(myRichTextBox);
    this.Content = myStackPanel;

    としてみましたが、リンクの上にもっていっても、ポインタが変わったりしません。
    リンク部分は、自分で実装するのでしょうか?
    その場合、RichTextBoxにはMouseClickのイベントハンドラがないので、MouseDoubleClickにするか、MouseUpにするしかないかと思いますが、どちらも実行してみると、選択範囲がなくなってしまう(URLを選択していても、ダブルクリックした瞬間に単語だけを選択してしまう)のです。
    private void richTextBox_MouseDoubleClick (object sender, MouseButtonEventArgs e) {
     string url = richTextBox.Selection.Text;
     System.Diagnostics.Process.Start(url);
    }

    private void richTextBox_MouseLeftButtonUp (object sender, MouseButtonEventArgs e) {
     string text = richTextBox.Selection.Text;
     System.Diagnostics.Process.Start(text);
    }
    どのようにしたら、RichTextBoxにハイパーリンクを表示してクリックしてリンクを開けるか、アドバイスお願いします。

    その後調べたところ、System.Windows.Formsの場合には、
    protected void Link_Cliked(object senedr, System.Windows.Forms.LinkClickedEventArgs e)を見つけました。これはFormsのだ。FormsでのRitchTextBoxはこれでよい。が、System.Windows.Controls.RitchTextBoxではだめみたいです。
    protected void Link_Cliked(object senedr, System.Windows.Controls.LinkClickedEventArgs e)とすると、LinkClickedEventArgsがないという。

    2012年2月16日 14:20

回答

  • 「WPF RichTextBox HyperLink」で検索すると、結構な件数がヒットするようです。
    RichTextBox ではなくて、HyperLink でイベントをハンドリングするのではないかと思います。

    • 回答の候補に設定 山本春海 2012年2月29日 8:43
    • 回答としてマーク 山本春海 2012年3月2日 8:29
    2012年2月22日 4:59

すべての返信

  • 「WPF RichTextBox HyperLink」で検索すると、結構な件数がヒットするようです。
    RichTextBox ではなくて、HyperLink でイベントをハンドリングするのではないかと思います。

    • 回答の候補に設定 山本春海 2012年2月29日 8:43
    • 回答としてマーク 山本春海 2012年3月2日 8:29
    2012年2月22日 4:59
  • こんにちは、d-kot さん。
     
    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    しばらく時間が経ちましたが、totojo さんからの情報は確認されましたか?
     
    参考になる情報をいただいていると思われましたので、勝手ながら私のほうで一旦回答としてマークさせていただきました。
     totojo さん、アドバイスありがとうございます。
     
    もしまだ解決していない場合には、確認されたことなどとともに情報更新をお願いしますね。
    今後とも MSDN フォーラムをよろしくお願いいたします。
    ______________________                                  
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海
    2012年3月2日 8:29