按控件实例名称及其属性名称实现动态赋值

原创 2004年08月01日 01:07:00

    '按控件实例名称及其属性名称实现动态赋值

    '入口参数:ClassInstance  控件所在的类实例

    '         ControlName 控件实例名称,区分大小写

    '         PropertyName 要设值的控件属性名称,区分大小写(其实这里可以不必区分大小写的,只是为了养成习惯,我这样要求自己的)

    '         Value 新值,类型是一个Object,这倒是要注意的

    '出口参数: True则重设成功,False不成功

    '需要 Imports System.ReflectionImports System.ComponentModel

    Public Function SetValueControlProperty(ByVal ClassInstance As Object, ByVal ControlName As String, ByVal PropertyName As String, ByVal Value As Object) As Boolean

        Dim Result As Boolean = False '返回值。虽然默认是Flase,但我还是喜欢这样设它,主要是看着明了

        '下面我不注释了

        Dim myType As Type = ClassInstance.GetType

        Dim myFieldInfo As FieldInfo = myType.GetField("_" & ControlName, BindingFlags.NonPublic Or _

                                     BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.Instance) '"_"这个是特要紧的

 

        If Not myFieldInfo Is Nothing Then

            Dim properties As PropertyDescriptorCollection = TypeDescriptor.GetProperties(myType)

            Dim myProperty As PropertyDescriptor = properties.Find(PropertyName, False)  '这里设为True就不用区分大小写了

 

            If Not myProperty Is Nothing Then

                Dim ctr As Object

                ctr = myFieldInfo.GetValue(ClassInstance) '取得控件实例

                Try

                    myProperty.SetValue(ctr, Value)

                    Result = True

                Catch ex As Exception

                    MsgBox(ex.Message)

                End Try

            End If

        End If

 

        Return Result

    End Function

 

    '测试

    Private Sub Test()

        SetValueControlProperty(Me, "Button1", "Text", "Hello")

        SetValueControlProperty(Me, "Button2", "Visible", False)

        Dim frm As New Form2

        SetValueControlProperty(frm, "MyTextBox", "Text", "应该还行吧?")

        frm.Show()

    End Sub

[WPF 容易忽视的细节] —— x:Name与Name属性

http://www.cnblogs.com/ColdJokeLife/p/3368683.html 一、前言 WPF使用XAML来对界面进行编写,界面与后台逻辑分离。我们也可以写Styl...
  • ayang1986
  • ayang1986
  • 2015年04月30日 14:46
  • 3064

java 利用反射机制,获取实体所有属性和方法,并对属性赋值

一个普通的实体Person: private int id; private String name; private Date createdTime; ... //其它字段 // get...
  • u011537073
  • u011537073
  • 2016年09月02日 01:24
  • 6317

通过反射获取类中的属性,并且将类中的属性名称以及对应的值赋给另一个类中的对象

通过反射获取类中的属性,并且将类中的属性名称以及对应的值赋给另一个类中的对象 一、创建一个需要被反射的类 public class Test { private String name...
  • LK10207160511
  • LK10207160511
  • 2015年12月20日 14:54
  • 1805

LINQ 通过动态生成lambda表达式,实现根据指定属性名称对序列进行排序

目前,对于Linq只是初步接触,还不熟悉,做项目的时候想到一个问题,如果想要查询任意字段的排序结果集,该怎么实现? 我们知道,T-SQL是非常容易解决这个问题,只要简单通过拼接T-SQL就可以达到该效...
  • qq506930427
  • qq506930427
  • 2017年08月07日 10:51
  • 95

(实例004)获取运行程序(控件)名称和内容.rar

  • 2011年05月28日 23:05
  • 3KB
  • 下载

如何遍历一个实例的所有属性,得到属性的名称和值

如何遍历一个实例的所有属性,得到属性的名称和值   Type   t   =   this.GetType();     MethodInfo   mii   =   t.GetProperty...
  • LF_Software_Studio
  • LF_Software_Studio
  • 2012年03月07日 19:15
  • 613

关于不同对象且属性名称也不一样的两个对象之间的复制以及动态对象生成

最近遇到一个问题,要完成两个对象之间的复制,也就是根据对象A的属性值生成对应的对象B。其中A与B的属性名不同,但是其实是一个东西。前后交了不同的名字而已。因为会后很多的这样的情况,不可能每一个对象都写...
  • qq_18630487
  • qq_18630487
  • 2015年12月28日 15:18
  • 990

Linux编程之《只运行一个实例》以及动态获取当前程序名称

转载自:http://www.cnblogs.com/highway-9/p/5517990.html linux平台中实现程序单例运行,以及动态获取当前程序名称 概述 ...
  • Hugoo_Hu
  • Hugoo_Hu
  • 2016年10月30日 22:29
  • 167

常用.Net控件名称简写

  • 2012年12月08日 10:13
  • 19KB
  • 下载

获取控件名称和内容.rar

  • 2010年07月01日 11:58
  • 38KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:按控件实例名称及其属性名称实现动态赋值
举报原因:
原因补充:

(最多只允许输入30个字)