none
リッチテキストのダブルクリックでコンテテキストメニューを表示するには RRS feed

  • 質問

  • リッチテキストの左ダブルクリックでコンテテキストメニューを表示するにはどうしたらいいでしょうか、

    右クリックには既に別のコンテキストメニューを割りあてています。

    右クリックと、左ダブルクリックで、別のメニューを表示させたいです。

    よろしくお願いします。

    Visual Studio 2008 で開発しています。

    2010年4月30日 7:52

回答

  • そもそも RichTextBox では、左ダブルクリックには「単語の選択」という機能が割り当てられているので、それを変更するってのはユーザビリティ的にどうかと思いますが……。

    この単語の選択機能が生きてて構わないのなら、ContextMenuStrip オブジェクトを適当に用意し、MouseDoubleClick イベントでその Show メソッドを呼び出せば良いでしょう。

    単語の選択機能を封じたいのなら、RichTextBox を派生させたカスタムコントロールを作ることになるかと思います。WndProc をオーバーライドし、WM_LBUTTONDBLCLK メッセージのときに、コンテキストメニューを表示させて MyBase.WndProc を呼ばずにそのまま Return するようにします。ついでに左ダブルクリックで表示するコンテキストメニューを AnotherContextMenuStrip プロパティとかで定義しておくのが自然でしょう。

    • 回答としてマーク TAKAPI 2010年5月6日 1:04
    2010年4月30日 10:31

すべての返信

  • そもそも RichTextBox では、左ダブルクリックには「単語の選択」という機能が割り当てられているので、それを変更するってのはユーザビリティ的にどうかと思いますが……。

    この単語の選択機能が生きてて構わないのなら、ContextMenuStrip オブジェクトを適当に用意し、MouseDoubleClick イベントでその Show メソッドを呼び出せば良いでしょう。

    単語の選択機能を封じたいのなら、RichTextBox を派生させたカスタムコントロールを作ることになるかと思います。WndProc をオーバーライドし、WM_LBUTTONDBLCLK メッセージのときに、コンテキストメニューを表示させて MyBase.WndProc を呼ばずにそのまま Return するようにします。ついでに左ダブルクリックで表示するコンテキストメニューを AnotherContextMenuStrip プロパティとかで定義しておくのが自然でしょう。

    • 回答としてマーク TAKAPI 2010年5月6日 1:04
    2010年4月30日 10:31
  • 単語選択機能をいかしたままでMouseDoubleClick でShowしてできました。

    ありがとうございました。

    2010年5月6日 1:04