DOBON.NET DOBON.NETプログラミング掲示板過去ログ

コンボボックスについて

分類:[.NET]

はじめまして。VB.NETで開発しております。
コンボボックスにフォーカスがある状態で↓キーを押したときに、
コンボボックスの中身が変わらないようにするにはどうしたらいいでしょうか?
やりたい処理としては、↓キーを押したときに、次の項目へフォーカスを移動
したいのですが、KeyDownイベントでフォーカス移動の処理を記述すれば
フォーカスは移動するのですが、ついでにコンボボックスの中身もひとつ後ろの
データに変わってしまいます。
ステップ実行してみると、コンボボックスの中身が変わるのはKeyDownより前
みたいなので、KeyDownでキー操作を無効にしても無意味なのです。

コンボボックスにフォーカスがある状態で↓キーを押したときに、
コンボの中身を変えずにフォーカス移動する方法をご存知の方がいらっしゃいましたら
教えていただけないでしょうか?
■No929に返信(てんてんさんの記事)
> コンボボックスにフォーカスがある状態で↓キーを押したときに、
> コンボの中身を変えずにフォーカス移動する方法をご存知の方がいらっしゃいましたら
> 教えていただけないでしょうか?

↓キーでコンボボックスの選択項目が変更されるのはWindowsの仕様なので、
システムでキー制御されるより前に↓キーを処理してやる必要があります。

試していないので確証はありませんが、
Control.ProcessDialogKey メソッドをオーバーライドして、
その中で↓キーを処理してやればよいと思います。
よねKENさん、お返事ありがとうございます。


> ↓キーでコンボボックスの選択項目が変更されるのはWindowsの仕様なので、
> システムでキー制御されるより前に↓キーを処理してやる必要があります。
>
> 試していないので確証はありませんが、
> Control.ProcessDialogKey メソッドをオーバーライドして、
> その中で↓キーを処理してやればよいと思います。
>

恥ずかしながらまだ.NETを始めたばかりで、オーバーライドがよくわかりません。
暫し勉強してから上記の方法を試し、結果を報告させていただきたいと思います。

DOBON.NET | プログラミング道 | プログラミング掲示板