按控制項執行個體名稱及其屬性名稱實現動態賦值

來源:互聯網
上載者:User
動態|控制項 '按控制項執行個體名稱及其屬性名稱實現動態賦值

'入口參數:ClassInstance 控制項所在的類執行個體

' ControlName 控制項執行個體名稱,區分大小寫

' PropertyName 要設值的控制項屬性名稱,區分大小寫(其實這裡可以不必區分大小寫,只是為了養成習慣,我這樣要求自己的)

' Value 新值,類型是一個Object,這倒是要注意的

'出口參數: True則重設成功,False不成功

'需要 Imports System.Reflection和Imports 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) '加"_"這個是特要緊的



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




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。