這可能很簡單,但我似乎無法弄清楚。使用GetField調用成員。在VB.NET中找不到字段
我有一堆被宣佈爲(以frmAquRun.Designer.vb)
Public WithEvents btnAquRunEvent1 As VisibiltyButtonLib.VisibilityButton
Public WithEvents btnAquRunEvent2 As VisibiltyButtonLib.VisibilityButton
表單設計器創建的窗體的項目...等
我基本上要能夠提供一個函數的數字訪問每個這些字段。所以我寫了這個函數。 (in frmAquRun.vb)
Const EVENT_BUTTON_PREFIX As String = "btnAquRunEvent"
Public Function getEventButton(ByVal id As Integer) As Windows.Forms.Button
Dim returnButton As Windows.Forms.Button = Nothing
Try
returnButton = DirectCast(Me.GetType().InvokeMember(eventButtonName, Reflection.BindingFlags.GetField Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.Instance, Nothing, Me, Nothing), Windows.Forms.Button)
Catch ex As Exception
End Try
Return returnButton
End Function
但它似乎總是生成字段沒有發現異常。 異常中的消息是「未找到字段'ATSIS_ControlProgram.frmAquRun.btnAquRunEvent1'」。
消息中的命名空間和形式的名稱是正確的。任何想法我做錯了什麼?
感謝,對的BindingFlags設置的getProperty的伎倆。我不知道控件對象的形式,我將它定義爲將來引用的形式,但事件按鈕位於不同的容器中,因此它會使事情變得複雜一些。 – Isaiah 2010-03-10 00:26:31