·您的位置: 首页 » 资源教程 » 编程开发 » ASP.NET » 反射应用之一:根据控件名、属性名进行取值和赋值

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

类别: ASP.NET教程  评论数:0 总得分:0
\'必须引用命名空间System.Reflection,System.ComponentModel

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

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




-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1