如果您在 .Net 中有一个容器,是否可以向添加到该控件的任何子项添加属性?
TableLayoutPanel 似乎可以做到这一点,如果你添加一个控件,比如一个面板,该控件有新的属性,单元格、列、行、colSpan、RowSpan。如果将控件移动到另一个面板,或者只是在 TableLayoutPanel 之外,属性就会消失。
这是如何实现的?
如果您在 .Net 中有一个容器,是否可以向添加到该控件的任何子项添加属性?
TableLayoutPanel 似乎可以做到这一点,如果你添加一个控件,比如一个面板,该控件有新的属性,单元格、列、行、colSpan、RowSpan。如果将控件移动到另一个面板,或者只是在 TableLayoutPanel 之外,属性就会消失。
这是如何实现的?
TableLayoutPanel控件实现了IExtenderProvider接口,并添加了您上面提到的名称的ProvideProperty属性 - 导致您查询的“附加属性功能”。
我建议您挖掘其原始源代码以获取有关此实现的更多信息。
(如果您没有 .NET 反汇编程序,您可能会在此处获得一个不错的免费反汇编程序。)
一些开始使用 IExtenderProvider 的资源: