VBの勉強を行っているものです。(VB2008 Express Edition)
コンボボックスについて質問ですが、DropDownStyleがDropDownListであるコンボボックスにいくつかの値がリスト上にあるものとします。
その時、プログラムから任意の値を与え、以下のようにするにはどうしたらよいでしょうか?
1.すでにコンボボックスのリスト上にこの値が存在する場合は、その値がコンボボックスで選択されている状態にする。
2.コンボボックスのリスト上にこの値がない場合は、その値をコンボボックスのリストに追加し、その値がコンボボックスで選択されている状態にする。
よろしくお願いします。
ヘルプ(MSDN)にコンボボックスで出来ることの一覧があります。
[ComboBox メンバ]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox_members.aspx
一通り目を通して、どうすれば実現できそうか考えてみては?
紹介してもらったページを見てみましたが、コンボボックスのリスト内に、任意の値があるかどうかを調べる方法
(ある場合は、その値をコンボボックスに表示する方法またはIndexを取得する方法)
を、どうやって実現すればいいか、いまいちよくわかりませんでした。
もちろん、Indexを0〜最大値までループして、値が存在したらそこを表示、ループ抜けても値がなければそれをコンボボックスに追加するという方法は思いつきましたが、
もっと簡単な方法があれば、どのようにすればよいか、教えていただきたく、よろしくお願いします。
MSDNを徹底的に調べ上げることしかないような気がします。
でも親切な方がおしえてくれるかも
>任意の値があるかどうか
を調べる手段として 紹介してもらったページ を見れば
> ComboBox 内で、指定した文字列で始まる最初の項目を検索します。
という機能はあることがわかります。
ただし、先頭が*** という限定なので
***という文字列を含む という場合には対応できません。
http://www.red.oit-net.jp/tatsuya/vb/ComboBox.htm
参考になりませんか?
http://hanatyan.sakura.ne.jp/dotnet/listfram.htm
こんなのもありますよ
探す対象はComboBox.Itemsに含まれるので,
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.items.aspx
経由で
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.objectcollection.aspx
を見て,さらにComboBox+ObjectCollectionのメンバ一覧
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.objectcollection_members.aspx
見れば,普通に.NET Frameworkのコレクションを使っていれば
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.objectcollection.indexof.aspx
に気付くと思います。
# ComboBoxにはオブジェクトを自由に突っ込めますのでとりあえずこちらが正道かと。
ツイート | ![]() |