トップ回答者
コンポーネントの取得

質問
-
ErrorProviderやTimer等のコンポーネントをFormに貼り付けた場合の話なんですが、
このErrorProvierやTimerコンポーネントをFormのプロパティやメソッドから取得って
できないのでしょうか?
例えば、コントロールならば、Form.Controlsプロパティから取得できる様に。
Formのprivate変数「components(components.Components)」から取得できそう
なのは分かったのですが、如何せんprivateなので、公開されているプロパティ、メソッド
から取得できないかと。
ご教授の程、宜しくお願い致します。
環境:
Windows Vista Ultimate
Visual Studio 2005 Professional Edition SP1
.NET Framework 2.0
回答
-
@ぶるーのさんこんばんは。
以下のページにリフレクションを使った例が載っていました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43736&forum=7&start=8
-
@ぶるーの さんからの引用 Formのprivate変数「components(components.Components)」から取得できそう
なのは分かったのですが、如何せんprivateなので、公開されているプロパティ、メソッド
から取得できないかと。
自分で作ったForm派生クラスであれば、componentsを返すプロパティ、メソッドを実装すれば良いのでは?
他の人が作ったクラスであるとか、Formクラスそのものだと無理ですが。
リフレクションであれば、自作であろうと他作であろうと、privateであろうとpublicであろうと、フィールドであろうとなんだろうと取得できます。
しかし、多用はお薦めしません。(名前の変更のリファクタが効かない、難読化の障害になる、アクセスレベルの意味がない)
すべての返信
-
@ぶるーのさんこんばんは。
以下のページにリフレクションを使った例が載っていました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43736&forum=7&start=8
-
@ぶるーの さんからの引用 Formのprivate変数「components(components.Components)」から取得できそう
なのは分かったのですが、如何せんprivateなので、公開されているプロパティ、メソッド
から取得できないかと。
自分で作ったForm派生クラスであれば、componentsを返すプロパティ、メソッドを実装すれば良いのでは?
他の人が作ったクラスであるとか、Formクラスそのものだと無理ですが。
リフレクションであれば、自作であろうと他作であろうと、privateであろうとpublicであろうと、フィールドであろうとなんだろうと取得できます。
しかし、多用はお薦めしません。(名前の変更のリファクタが効かない、難読化の障害になる、アクセスレベルの意味がない)