反射应用之一:根据控件名、属性名进行取值和赋值

原创 2004年09月21日 12:51:00
'必须引用命名空间System.Reflection,System.ComponentModel<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    '以下根据控件名和属性名取值

    Public Function GetValueControlProperty(ByVal ClassInstance As Object, ByVal ControlName As String, ByVal PropertyName As String) As Object

        Dim Result As Object

        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)

            If Not myProperty Is Nothing Then

                Dim ctr As Object

                ctr = myFieldInfo.GetValue(ClassInstance)

                Try

                    Result = myProperty.GetValue(ctr)

                Catch ex As Exception

                    MsgBox(ex.Message)

                End Try

            End If

        End If

        Return Result

    End Function

    '以下根据控件名和属性名赋值

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

        Dim Result As Object

        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 = ctr

                Catch ex As Exception

                    MsgBox(ex.Message)

                End Try

            End If

        End If

        Return Result

    End Function

    '调用

    '以下实现Label1.Text=TextBox1.Text,Label2.Text=TextBox2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim i As Integer

        For i = 1 To 2

            Me.SetValueControlProperty(Me, "Label" & i.ToString, "Text", GetValueControlProperty(Me, "TextBox" & i.ToString, "Text"))

        Next i

    End Sub

反射应用之一:根据控件名、属性名进行取值和赋值

    必须引用命名空间System.Reflection,System.ComponentModel    以下根据控件名和属性名取值    Public Function GetValueCont...
  • lzmtw
  • lzmtw
  • 2004年08月17日 00:32
  • 5398

根据控件名、属性名进行取值和赋值

必须引用命名空间System.Reflection,System.ComponentModel    以下根据控件名和属性名取值    Public Function GetValueControlP...
  • xxlt
  • xxlt
  • 2005年04月08日 12:58
  • 519

根据控件名、属性名进行取值和赋值

反射应用之一:根据控件名、属性名进行取值和赋值必须引用命名空间System.Reflection,System.ComponentModel 以下根据控件名和属性名取值Public Function ...
  • drk928
  • drk928
  • 2005年11月19日 14:27
  • 931

反射的应用--根据控件名取得控件

http://www.cnblogs.com/waban/archive/2007/03/06/665326.html今天在项目中有用到根据控件名称取控件的问题,经过查找相关资料,实现方法如下,此代码...
  • plean
  • plean
  • 2011年07月23日 11:45
  • 1117

利用java 反射原理写了一个赋值和取值通用类

首先了解一下反射的原理,什么是反射?所谓的反射就是指java 语言在运行时拥有一项自观的能力,反射能使你得到装载到 jvm 中的类的内部信息,它不需要你在编码的时候就知道所需类的内部信息,允许程序执行...
  • xiaofengxiaoling
  • xiaofengxiaoling
  • 2012年03月22日 10:47
  • 11159

通过java反射机制来获取属性的类型,获取属性的值并给属性赋值

public static void getObjectValue(Object object) throws Exception {           //我们项目的所有实体类都继承BaseDo...
  • houyongheng521
  • houyongheng521
  • 2014年07月09日 11:23
  • 736

java使用反射机制根据属性名获取object对象指定属性的值

主要讲到把字符串zh_cn转成java驼峰标识的属性,根据指定属性获取传入object对象的zhCn属性的值,关联java反射机制的点用到了获取共有属性和私有属性的区别,getDeclaredFiel...
  • liqi_q
  • liqi_q
  • 2017年09月13日 14:06
  • 660

Java---通过属性名反射获取get和set方法

最近有此需求:拿到name,需要执行setName()方法,这里记录一下,可以当做工具类直接使用: package test; import java.lang.annotation.Annota...
  • weixin_39800144
  • weixin_39800144
  • 2018年01月09日 14:19
  • 220

c#通过反射设置和获取值

private object GetValue(T obj, string propertyName) { PropertyInfo propertyInfo;...
  • chenpeggy
  • chenpeggy
  • 2014年07月30日 16:04
  • 983

Java通过反射获取到其类的属性和值

public static String getMessage( Locale locale , String key ){ String message = key; try { ...
  • c5153000
  • c5153000
  • 2012年04月28日 15:10
  • 4025
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:反射应用之一:根据控件名、属性名进行取值和赋值
举报原因:
原因补充:

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