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

プロパティ値の取得でエラー

環境/言語:[XP、C#、VS2005]
分類:[.NET]

お世話になっております。
ユーザコントールのプロパティの値を取得したいんですが
実行時に「オブジェクトがターゲットの型と一致しません」とエラーになります。
下記コードです。(

Control hControl = this.ActiveControl;
Type myType = typeof(TextBoxEx);
PropertyInfo wpro = myType.GetProperty("HelpText", typeof(string));   Console.WriteLine("値:{0}.", wpro.GetValue(hControl.Name, null));

最後の行でエラーになります。
すいませんが宜しく御願いします。
PropertyInfo.GetProperty の第一引数は名前じゃありません。オブジェクトそのものです。
// どうみてもリフレクション使うところじゃないですな。
お返事ありがとうございます。
hControl.NameをhControlにして値がとれました。

> // どうみてもリフレクション使うところじゃないですな。
貼ったコントロールから情報を取得
例えば テキストボックスにヘルプ情報を設定し実行時
アクティブ時にステータスバーに表示するなどを
フォーム側で対応したりコントロールのデザインを変更したりは
どのように実装したらいいのでしょうか?
(コントロール単位に実装をしたくないんです・・)
> 例えば テキストボックスにヘルプ情報を設定し実行時
> アクティブ時にステータスバーに表示するなどを
> フォーム側で対応したりコントロールのデザインを変更したりは
> どのように実装したらいいのでしょうか?
> (コントロール単位に実装をしたくないんです・・)
案の箇条書きをしてみる。実際に使えるかどうかは要求によります。
アイデア次第でなんとでもなりそうな気はします。

・HelpTextプロパティを持つ共通のインターフェースを作成し、TextBoxEx等、今後増える派生クラスで実装する。
 今のように派生クラスでプロパティを増やしていくというスタイルであれば、その共通インターフェースへのasで済みますね。
・Dictionary<Control, string>みたいなものでマッピングしておく。
 HelpTextプロパティの代わりにコードで対応付けを書く。
・独自のComponent派生クラスを作って、コントロールと1:1で関連づける。
 デザイナから文字列を設定できる。しかし、コントロールと1:1になるため、大量にComponentインスタンスが必要。

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