一个控制皮肤组织的控制

Posted Dincat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个控制皮肤组织的控制相关的知识,希望对你有一定的参考价值。

介绍 你可能会问,什么是皮肤控制?皮肤控件是可以快速更改许多其他控件属性的控件。例如,在应用程序中,您希望能够拥有绿色配色方案、蓝色配色方案等。通过使用此控件,可以指定属性(通过名称或内置)以及要将属性设置为什么。快速、简单,并节省大量代码。这就是…… 它是如何工作的 这段代码如何工作。其实很简单。包括两个方法来改变一些常见的属性,如名称,背景色,前面板,等等。除此之外,你还可以说你只需要改变某些类型,比如只改变按钮类型控件的前面板颜色。但是如果您想要更改自定义控件的属性呢?还是没有提供?这就是反射的作用。 在运行时,我不显式地知道给定对象的类型。所以我必须使用反射来获得它,像这样: 隐藏,复制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

以上是关于一个控制皮肤组织的控制的主要内容,如果未能解决你的问题,请参考以下文章

片段中的媒体控制器

使用导航控制器按下后退按钮后如何防止前一个片段显示?

C++ 解释器/控制台/片段编译器

从另一个片段的其他视图控制片段的视图

vs2008编译QT开源项目--太阳神三国杀源码分析 皮肤

重写 iOS 应用程序以在 iOS 和 Mac 上运行——如何组织控制器代码?