いつもお世話になっております。
開発環境:.NET2005
言語:VB
ComboBoxに表示する値とキーとなる値(非表示)をもたせたいのですが
2003の時の手法では上手くいかず行き詰まっています。
どなたかご教授下さい。
test(0).item = "A"
test(0).key = "a"
test(1).item = "B"
test(1).key = "b"
test(2).item = "C"
test(2).key = "c"
TantoDrp.ValueMember = "key"
TantoDrp.DisplayMember = "item"
TantoDrp.DataSource = test
だと全く上記項目がコンボに表示されません。
AddやInsertだとValue値を入れることができず悩んでおります。
初歩的なことなのかもしれませんが、よろしくお願い致します。
DataSource に、配列を渡しているという事ですね。
> 上記項目がコンボに表示されません。
(1) ToString メソッドの内容が表示されてしまうのでしょうか。
(2) それとも、何も表示されないのでしょうか。
(3) あるいは、何かエラーが出てしまうのでしょうか。
(1) ToString メソッドの方が表示されてしまっているようであれば、指定した
item 等が、Public プロパティになっているかを確認してみてください。
たとえば、アクセスレベルが Friend 以下であったり、あるいは、
プロパティではなくフィールド変数として公開されていたりはしませんか?
(2) 何も表示されない状態だとしたら、DrawMode プロパティが Normal に
設定されているかどうかを確認してみてください。このプロパティが、
Normal 以外に指定されている場合は、DrawItem イベントを使って、
項目の内容を自分で描画してやる必要があります。
(3) エラーが出ているようであれば、そのエラーの内容を正確に記載してみてください。
その際、エラーを再現できるような最小限のコードをつけてもらえると、
こちらでも検証できますので、現象を確認しやすくなります。
魔界の仮面弁士さま
ご返答ありがとうございます。
ご指摘どおり、(1)ToString値がコンボに表示されております。
配列をPublicにし、
コンボ.Modifiers(参照範囲)をPublicにしてみましたが
やはり同じ結果となってしまいます。
>プロパティではなくフィールド変数として公開されていたりはしませんか?
知識不足でフィールド変数については現在調べてます。
お世話になっております。
>プロパティではなくフィールド変数として公開されていたりはしませんか?
すみません。
調べてみたのですが勉強不足でこの文章がどういったことを
意味しているのかわかりません。
もう少し詳しくご教授していただけないでしょうか?
最悪の場合、配列をセットできなくても
Value値を持たせることができるなら
AddやInsertでひとつずつコンボにセットしても問題ないと思います。
この場合によい方法があれば
ヒントだけでも結構ですのでご教授ください。
>プロパティではなくフィールド変数として公開されていたりはしませんか?
上記のご指摘どおりでした。
無事解決しました。
ありがとうございました。
ツイート | ![]() |