1

私のプロジェクトの多くのフォームは、基本フォームから継承しています。派生フォームの Controls コレクションを取得するのは簡単ですが、VS がこれを非公開としてマークするため、Components コレクションにアクセスする簡単な方法を見つけられませんでした。

これはリフレクションで実行できると思いますが、以前にリフレクションを使用したことがないため、どうすればよいかわかりません。

現在、GetComponents 関数をオーバーライドし、関心のあるコンポーネントの配列を返す、一種の不格好な回避策を使用しています。オーバーライドされた関数の実装を忘れやすいため、明らかにエラーが発生しやすくなっています。または、コンポーネントが追加されたときに更新します。

誰かが何かヒントを持っているか、より良い方法を提案できるなら、私は聞いてうれしいです.

4

3 に答える 3

1

コンポーネントのModifiersプロパティをstrictprotectedに設定すると、コンポーネントコレクションを使用せずにコンポーネントにアクセスできるようになります。

編集:発見可能性は、反射を使用して各フィールドを歩くことで実行できます。あなたの場合、それは最適ではないかもしれませんが。

于 2008-08-27T20:37:28.857 に答える
0

関数をオーバーライドするのを忘れるのが心配な場合は、抽象化してください。

于 2008-08-27T20:19:53.890 に答える