- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロパティをループで指定する)
プロパティをループで指定する方法はあるのか?
このQ&Aのポイント
- VB.NETの環境で、あるクラスのプロパティをループで指定して利用する方法はありますか?例えば、40個のプロパティに対してループしてゲットやセットすることは可能ですか?
- フォームなどのコントロールで、複数のコントロールへ同じ内容を入れ込む場合は、プロパティをループして同じ操作を行うことができますが、VB.NETの環境で同じようなことができるのか疑問です。
- VB.NETの環境で、40個のプロパティに対してループを使用してアクセスする方法はありますか?プロパティの値を取得したり設定したりするための効率的な方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
たとえば、Button1コントロールのプロパティとその値は、以下のような感じで表示できたと思います。 Dim pi As System.Reflection.PropertyInfo For Each pi In Me.Button1.GetType().GetProperties() MsgBox(pi.Name + "=" + pi.GetValue(Me.Button1, Nothing).ToString()) Next
お礼
ありがとうございます。 なるほど・・・GetTypeでGetPropertiesですね。 Riflectionをつかうのは知りませんでした。 まだまだ勉強不足ですね。。。 ヒントをいただいて色々と調べた結果以下でクラスのプロパティで設定した値を取得できました。 ※SampleControlClassを生成しているのは、元々取得したいプロパティが入っているSampleClassがオブジェクトを生成しないMustInheritとしているので、継承しているSampleControlClassをオブジェクト生成して入れ込んでます。 Dim SCClass As New SampleClassControl Dim ClsType As Type = GetType(SampleClass) Dim Prop() As PropertyInfo = ClsType.GetProperties For Each props As PropertyInfo In Prop Console.WriteLine(CType(props.GetValue(SCClass, Nothing), Integer)) Next ちなみにセットもついでにできました。 For Each props As PropertyInfo In Prop props.SetValue(SCClass, I, Nothing) I += 1 Next 一応、期待通りにことは運んだんですが、他にもありますかね?