質問者
ComboBox のリストを開いた時、任意の位置から表示させたい

質問
-
毎々お世話になります。
Visual Studio 2005 Enterprise Edition で Visual Basic による開発を行っています。
ComboBox から時刻を選択させようとしており、
""
"00"
"01"
"02"
:
"21"
"22"
"23"の25行を与えているのですが、
この ComboBox のリストを開かれた際、時刻未指定の場合は11行目(→"09")から表示させたいのです。以前VB6で、VsFlexGrid で表示先頭行の指定ができたような記憶があるのですが、
ComboBox のプロパティでは該当する項目が見当たりません。ご存知の方、よろしくお願いします。
すべての返信
-
なるほど。
.NET/WinForm の ComboBox ではプロパティとして提供されていませんが、コモンコントロールレベルまで降りると、CB_SETTOPINDEX メッセージが存在しています。これを SendMessage で送信してやれば先頭インデックスを指定できます。
ただし、このメッセージはドロップダウン完了後でないと有効ではないようです。つまり、アプリケーションやコントロールの初期化時、あるいは DropDown イベント内で送信しても無視されます。あくまで DropDown イベントが完了した後。なので、DropDown 内で、BeginInvoke やタイマを使ってメッセージ送信を遅延させる必要があります。 -
ComboBoxのアイテムを単に"09"~"23"にしたいということでしょうか?
おそらく違うと思います。
私は以下のようなことをしたいと読み取っています。・空の文字列と 00 ~ 23 を候補として表示する。
・ドロップダウンを開いた段階で一番上に表示されるのが 09 としたい。(スクロールした状態)
・ただし、ドロップダウンを開いて閉じただけでは、09 を選択状態にしたくない。(SelectedIndex = -1 に戻るイメージ)
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。