.Net にコンテナーがある場合、そのコントロールに追加された子にプロパティを追加することは可能ですか?
TableLayoutPanel はこれを行っているように見えます。たとえば、パネルを追加すると、コントロールにはセル、列、行、colSpan、RowSpan という新しいプロパティがあります。コントロールを別のパネルに移動するか、TableLayoutPanel のすぐ外側に移動すると、プロパティはなくなります。
これはどのように達成されますか?
.Net にコンテナーがある場合、そのコントロールに追加された子にプロパティを追加することは可能ですか?
TableLayoutPanel はこれを行っているように見えます。たとえば、パネルを追加すると、コントロールにはセル、列、行、colSpan、RowSpan という新しいプロパティがあります。コントロールを別のパネルに移動するか、TableLayoutPanel のすぐ外側に移動すると、プロパティはなくなります。
これはどのように達成されますか?
TableLayoutPanelコントロールは、IExtenderProviderインターフェイスを実装し、上記の名前でProvideProperty属性を追加します。これにより、問い合わせたこの「追加のプロパティ機能」が得られます。
この実装に関する詳細情報を入手するには、元のソースコードを掘り下げることをお勧めします。
(.NET逆アセンブラがない場合は、ここで無料の優れた逆アセンブラを入手できます。)
IExtenderProviderを開始するためのいくつかのソース: