.NET2005のコンボボックスについて

解決


ぼーちゃん  2006-08-29 02:09:19  No: 132949

いつもお世話になっております。

開発環境:.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値を入れることができず悩んでおります。
  初歩的なことなのかもしれませんが、よろしくお願い致します。


魔界の仮面弁士  2006-08-29 02:44:57  No: 132950

DataSource に、配列を渡しているという事ですね。

> 上記項目がコンボに表示されません。
(1) ToString メソッドの内容が表示されてしまうのでしょうか。
(2) それとも、何も表示されないのでしょうか。
(3) あるいは、何かエラーが出てしまうのでしょうか。

(1) ToString メソッドの方が表示されてしまっているようであれば、指定した
item 等が、Public プロパティになっているかを確認してみてください。
たとえば、アクセスレベルが Friend 以下であったり、あるいは、
プロパティではなくフィールド変数として公開されていたりはしませんか?

(2) 何も表示されない状態だとしたら、DrawMode プロパティが Normal に
設定されているかどうかを確認してみてください。このプロパティが、
Normal 以外に指定されている場合は、DrawItem イベントを使って、
項目の内容を自分で描画してやる必要があります。

(3) エラーが出ているようであれば、そのエラーの内容を正確に記載してみてください。
その際、エラーを再現できるような最小限のコードをつけてもらえると、
こちらでも検証できますので、現象を確認しやすくなります。


ぼーちゃん  2006-08-29 19:17:12  No: 132951

魔界の仮面弁士さま

ご返答ありがとうございます。
ご指摘どおり、(1)ToString値がコンボに表示されております。
配列をPublicにし、
コンボ.Modifiers(参照範囲)をPublicにしてみましたが
やはり同じ結果となってしまいます。

>プロパティではなくフィールド変数として公開されていたりはしませんか?

知識不足でフィールド変数については現在調べてます。


ぼーちゃん  2006-08-29 22:19:20  No: 132952

お世話になっております。

>プロパティではなくフィールド変数として公開されていたりはしませんか?
すみません。
調べてみたのですが勉強不足でこの文章がどういったことを
意味しているのかわかりません。
もう少し詳しくご教授していただけないでしょうか?

最悪の場合、配列をセットできなくても
Value値を持たせることができるなら
AddやInsertでひとつずつコンボにセットしても問題ないと思います。
この場合によい方法があれば
ヒントだけでも結構ですのでご教授ください。


ぼーちゃん  2006-08-30 01:21:49  No: 132953

>プロパティではなくフィールド変数として公開されていたりはしませんか?

上記のご指摘どおりでした。
無事解決しました。
ありがとうございました。


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

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






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