标签:其他 数组 tran key web setvalue 外观 大量 nload
介绍 你可能会问,什么是皮肤控制?皮肤控件是可以快速更改许多其他控件属性的控件。例如,在应用程序中,您希望能够拥有绿色配色方案、蓝色配色方案等。通过使用此控件,可以指定属性(通过名称或内置)以及要将属性设置为什么。快速、简单,并节省大量代码。这就是…… 它是如何工作的 这段代码如何工作。其实很简单。包括两个方法来改变一些常见的属性,如名称,背景色,前面板,等等。除此之外,你还可以说你只需要改变某些类型,比如只改变按钮类型控件的前面板颜色。但是如果您想要更改自定义控件的属性呢?还是没有提供?这就是反射的作用。 在运行时,我不显式地知道给定对象的类型。所以我必须使用反射来获得它,像这样: 隐藏,复制Code
Dim objType As Type = ctrl.GetType()
这会创建一个对象objType。objType的类型是ctrl控件的类型。然后,我们可以得到我们想要的财产,给它一个名字。 隐藏,复制Code
Dim propInfo As PropertyInfo = objType.GetProperty(PropertyName)
这将获取该对象的PropertyInfo。通过传入我们想要更改的属性的名称,我们可以获取或设置属性。剩下的就是改变属性了。 隐藏,复制Code
propInfo.SetValue(ctrl, val, Nothing)
ctrl是我们想要更改其属性的控件。val是新的值。在数组的情况下,索引使用Nothing (null)。我只是把它拼凑在一起,所以我没有添加修改它的功能。如果有足够的需求,我可以。 但等等,这里有个陷阱… 为了更改控件的属性,必须将其通过ByRef(erence)传递给皮肤控件。这意味着外观控件仍然持有引用,因此该控件不能被GC清除。调用RemoveControl方法将删除对控件的引用。仅此而已。希望这能教会你一些关于反思的知识。 本文转载于:http://www.diyabc.com/frontweb/news12354.html
标签:其他 数组 tran key web setvalue 外观 大量 nload
原文地址:https://www.cnblogs.com/Dincat/p/13474023.html