• 一个控制皮肤组织的控制


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

  • 相关阅读:
    安装MySQL
    Apache安装与重启、启动失败
    MySQL重启
    数据库查询乱码
    MySQL数据表操作、查看mysql表的信息等
    rust学习之一:基本语法
    llvm clang的编译和安装
    Linux 性能分析60秒初步排除手段
    pahole编译过程libbpf: failed to find valid kernel BTF
    ipmitool常用指令测试大全
  • 原文地址:https://www.cnblogs.com/Dincat/p/13474023.html
Copyright © 2020-2023  润新知