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

ComboBoxのDisplayMemberのような機能を実装するには?

環境/言語:[.NET 2003]
分類:[.NET]

いつもお世話になっております。
じゅでと申します。

今回の質問はタイトルにある通り
ComboBoxのDisplayMemberのような機能を実装するには
どのように組めばよいのかとわからないので質問させて
頂きました。

また、多少違いますが変数に対してもそのような事が
行えないかと思い取っ掛かりをさがしております。

今回の質問はまず資料として何があるのかも分かっていません。
お分かりになる方がいらっしゃいましたらよろしくお願いします。

例としましては

DisplayMemberの方はComboBoxを見ていただくとして
変数の方は

内部で変数が
s_01
s_02
s_03
s_04
s_05

とあった場合に
s_を固定として渡された01〜05の値により
返す変数の値を変えるというものです。

別にCaseで分ければそれでおわりなのですが、
それだと変数が増えるたびに追加していかなければならないので
このような事ができるかなぁ〜と思ったしだいであります。

なお、変数は構造体を定義して入れてもいいですし、素のままで
定義しても良いです。

上記のような事を実装する方法、または実装出来ない
などの情報がありましたら、お忙しいとは思いますが
教えていただければ助かります。

以上
■No17140に返信(じゅでさんの記事)
> 別にCaseで分ければそれでおわりなのですが、
> それだと変数が増えるたびに追加していかなければならないので
> このような事ができるかなぁ〜と思ったしだいであります。

Select Case は不適切でしょうね。
渡されたオブジェクトをすべて For ステートメントで舐める方がまだ正当です。
ComboBox を見ていただければわかるかと思いますが、Item は自身で管理できていますから。
じゅでです。

ご返信ありがとうございます。

> Select Case は不適切でしょうね。

やはり不適切ですよね。

> 渡されたオブジェクトをすべて For ステートメントで舐める方がまだ正当です。
> ComboBox を見ていただければわかるかと思いますが、Item は自身で管理できていますから。

上記の件については、申し訳ありません。
せっかくお答えいただいたのですが、
私の理解力が足らずに分かりません。
> 今回の質問はタイトルにある通り
> ComboBoxのDisplayMemberのような機能を実装するには
>
> 内部で変数が
> s_01
> s_02
> s_03
> s_04
> s_05
>
> とあった場合に
> s_を固定として渡された01〜05の値により
> 返す変数の値を変えるというものです。

もしかしてComboBoxには関係なくて
変数を変数文字列で指定できないか?
というお話?CallByName関数とか。
■No17144に返信(まどかさんの記事)
>>今回の質問はタイトルにある通り
>>ComboBoxのDisplayMemberのような機能を実装するには
>>
>>内部で変数が
>>s_01
>>s_02
>>s_03
>>s_04
>>s_05
>>
>>とあった場合に
>>s_を固定として渡された01〜05の値により
>>返す変数の値を変えるというものです。
>
> もしかしてComboBoxには関係なくて
> 変数を変数文字列で指定できないか?
> というお話?CallByName関数とか。

その通りです。(私が勘違いしてたらごめんなさい)
固定値以外の変数名と一致する
文字列が渡された際にそれと一致する変数をとれないかなぁ〜っと

そしてもうひとつが
ComboBoxのDisplayMemberと同等の機能をもつようなものを
独自クラスで実装するにはどうしたらいいかなぁ〜っと言う
2点となります。
> その通りです。(私が勘違いしてたらごめんなさい)
> 固定値以外の変数名と一致する
> 文字列が渡された際にそれと一致する変数をとれないかなぁ〜っと
っ[Collection?]
っ[Delegate?]

> そしてもうひとつが
> ComboBoxのDisplayMemberと同等の機能をもつようなものを
> 独自クラスで実装するにはどうしたらいいかなぁ〜っと言う
> 2点となります。
っ[こっちは不明]
じゅでです。
ご回答ありがとうございます。

> っ[Collection?]
> っ[Delegate?]

やっぱそうなりますか。
それも考えたのですが、キーが必要であったりIndexでアクセスだったり
したので、そこで下のような事が変数でもできないかなぁ〜っと思いまして。

> っ[こっちは不明]

ハッシュテーブルなんかつかえば、値とキーでキー情報を渡して変数の値を
とってもこれるなぁ〜っとは思っていたのですが、
ComboBoxのDisplayMemberみたいに名前わたしただけで
変数の値とってこれるようなつくりが別にあるのかなぁ〜っと
思って質問させていただきました。

関数なんかはデリゲートも考えたのですが、
やっぱりDisplayMemberとかは文字列で渡してるので、ほかに方法が
あるのかなぁ〜っと思いまして。

何かご存知でしたらよろしくお願いいたします。

以上
> ComboBoxのDisplayMemberみたいに名前わたしただけで
> 変数の値とってこれるようなつくりが別にあるのかなぁ〜っと
> 思って質問させていただきました。

System.Reflection名前空間を調べるとよいでしょう。
あと、ここ どぼんさんのTipsの「その他のTips」「リフレクション」も。
じゅでであります。

ご返答ありがとうございます。

> System.Reflection名前空間を調べるとよいでしょう。
> あと、ここ どぼんさんのTipsの「その他のTips」「リフレクション」も。

ありがとうございます。
見落としてました。
本当にたすかります。
まさしくどんぴしゃです。

この喜びをどのように表したらいいか分からないくらい、
マシンの前で小躍りしております。

どもでした。
解決済み!

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