コンボボックスのF4キーによるドロップダウンリストの表示をしなくするには?

解決


だー  2002-05-28 03:00:59  No: 75641

コンボボックス(Styleプロパティ=0)にフォーカスが存在する時に、
F4キーを押すとドロップダウンリストが表示されると思うのですが、
それを表示しないようにするにはどうしたらよいでしょうか?


たかみちえ  URL  2002-05-28 06:16:32  No: 75642

コンボボックスなら、keybd_eventとかでEscキーを押させたら閉じないですか?


だー  2002-05-28 06:42:42  No: 75643

ご回答ありがとうございました。
早速試してみたのですが、閉じることはできるのですが、
一瞬リストが表示されてしまいます。
それを全く表示しないようにしたいのですが、できないでしょうかね?


Say  2002-05-28 19:24:43  No: 75644

おすすめではありませんが、
フックしてキーを殺すとか


だー  2002-05-29 00:23:57  No: 75645

Sayさん、ご回答ありがとうございました。

例の画面には、入力項目がたくさんあるので、
フックは使えないですよね。。。
うーん、やはり実現は難しいのでしょうか。。。


Say  2002-05-29 01:39:26  No: 75646

>例の画面には、入力項目がたくさんあるので、
>フックは使えないですよね。。。

殺したいキー以外は何もせず戻してやれば
いいだけでは?


だー  2002-05-29 20:17:20  No: 75647

Sayさん、ありがとうございます。

フックに関しては、勉強不足だったようです。
SetWindowLong()などを調べてみましたが、
全然わかっていないなーと我ながら痛感しました。
(説明を読んでもわからないままでした。。。(T_T))
もう少し調べてから、また質問させていただくことになるかもしれません。

ただ、F4キーは他の動作をするようにしたいため、
F4キー自体を殺してしまうことはおそらくできないでしょうね。


たかみちえ  URL  2002-05-29 21:22:13  No: 75648

いくつか方法を思いつきました。いずれも使えるかどうか…^^;
1.EnabledをFalseにする。
  たしかにドロップダウンしませんけど、当然選択もできません^^;

2.コンボボックスもどきのユーザーコントロールを作ってしまう。
  十字キー(というのかな?)で項目はかえられるけど、ドロップダウンしない…というのなら、
リストボックスをユーザーコントロールにおいて、一項目しか見えないようにして、
上下にDrawEdgeで枠を描いて、右端にある矢印のついたボタンを描けば、
とりあえずできると思います。
  あとは、一行テキストボックスにボタンを描いて、矢印キーが押されたら、内容を書き換えて文章を選択させる…とか。

3.F4の直後にEscを押して閉じるようにするとして、そのあいだドロップダウンリストが出る部分をどうにかして隠す。
  うまく隠さないと、かえって不自然かも…。

  どうでしょうか?2はちょっといいんじゃないかなと思います。実装までが面倒ですけど…。
一行テキストボックスに…。というのは、わりと難しくはないような…。
(ドロップダウンリストとして使ってるなら、ちょっと難しそうですけど)


だー  2002-05-31 04:50:41  No: 75649

たかみちえさん、いろいろ考えてくださってようで、
どうもありがとうございました(^-^

が、しかし、コンボのドロップダウン機能は全く不要なのではなく、
右端のドロップダウンのボタンが押されたら、
普通にドロップダウンでリスト表示・選択したいですし、
それにF4キーではリストを表示したくないのですが、
その代わりにF5キーでリスト表示するようにしたいのです。

説明不足でどうも申し訳ありませんでした。

やっぱりすごく難しそうですね、この問題は(^^;


うち  2002-05-31 18:35:51  No: 75650

横からすいません。
悩んでいるようなので、以下の方法ではと思い書込みしました。

1.FormのKeyPreviewプロパティを Trueにする。
2.Form_KeyDownに以下のコードを入力する。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

    If KeyCode = 116 Then
        ' 入力を[F5] -> [F4]キーに変更
        KeyCode = 115
    ElseIf KeyCode = 115 Then
        ' [F4]キーを無視する
        KeyCode = 0
    End If

End Sub

3.実行して確認。

F4キーを他で使いたいなら条件付けで回避して下さい。
自分の環境では問題なく動作しました。
これでは駄目でしょうか。


うち  2002-05-31 18:41:18  No: 75651

すいません、修正です。
キーコードの確認に 115、116 を使わずに、
vbKeyF4、vbKeyF5 を使った方が良かったですね。
その方があとから見やすいですから。


だー  2002-06-05 18:24:49  No: 75652

わー!できました!!(^o^)

うちさん、大変レスが遅れてしまいましたが、
思い通りの結果を得られることができました。
ご回答ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加