初めて質問いたします。
ドロップダウンコンボボックスを使用し、キーボードによる
テキストの入力は可能としています。
右クリックするとでてくるデフォルトのメニュー(コンテクストメニュー)の出力を抑制することは可能でしょうか?
(コンテクストメニューの”貼り付け”を行いたくないのです。)
良い方法がございましたら、ご教授お願いいたします。
テキストボックスだと、右クリック時のイベントで、
EnabledをFalseにすればいいとか、書いてあるのを見たことがありますけど、
それの応用でできませんか?
コンテキストメニューを表示させたくないというならば、
サブクラス化して WM_CONTEXTMENU メッセージを無視するようにしましょう。
# コンテキストメニューはマウスの右クリック以外にも、
# キーボードのプロパティキーや Shift+F10 など、
# いろいろな方法で表示させることができてしまいます。
右クリックした時だけ、コンテキストメニューを表示させたくない
(他の方法では、表示させたい)という場合は、
たかみちえさんの方法で良いと思います。
また、貼り付けをできないようにしたいという場合は、
WM_PASTE メッセージを無視するようにしましょう。
# 貼り付けも、コンテキストメニュー表示と同様、
# コンテキストメニューから [貼り付け] を選択する方法や、
# Ctrl+V など、いろいろな方法で貼り付けることができてしまいます。
ただ、ここまで行うのは面倒(危険)なので、
貼り付けなどはできるようにしておいて、処理を実行する時に、
コンボの中身のチェックを行うのが普通かと思います。
ご指導ありがとうございます。
コンボに右クリックイベントってあるんですか?(見つけられません。)
また、キーボードによる操作であればコンボのイベントで逃がせるのですが、
右クリックをイベントで逃がす方法がわかりません。
できれば、そのコンボだけ右クリックのコンテキストメニューの制御ができれば
よいのですが・・・。
未熟なもので、”WM_PASTE メッセージを無視する”というのは特定のコンボだけ
無視するようにできるのでしょうか?
お知恵をお貸しください。
MouseDown イベントってないみたいですね。
あるものとばっかり思っていました。
代替案
テキストボックスとコンボボックス(ドロップダウンリスト)を
2つ重ねて配置してみてはどうですか。
そして、コンボから選択した時に、テキストボックスに
その内容を反映させるとか。
ツイート | ![]() |