一個BindingSource
是Component
,不是Control
,所以它不是Controls
收藏。然而,設計師創建一個私有場稱爲components
舉行創建窗體上的所有組件,這樣你就可以通過現場訪問組件:
For Each c In components.Components
MessageBox.Show(c.ToString())
Next
不幸的是,組件沒有一個名字,所以你會必須找到另一種方法來識別您的BindingSource
...例如,如果您知道每個BindingSource
都綁定到DataTable
,您可以檢查表的名稱。
Private Function GetBindingSource(ByVal tableName As String) As BindingSource
For Each c In components.Components
Dim bs As BindingSource = TryCast(c, BindingSource)
' If the component is a BindingSource
If bs IsNot Nothing Then
Dim dt As DataTable = TryCast(bs.DataSource, DataTable)
' If the DataSource is a DataTable
If dt IsNot Nothing Then
' Check the table name against the parameter
If dt.TableName = tableName Then
' Found it !
Return bs
End If
End If
End If
Next
' Oops, BindingSource not found
Return Nothing
End Function
編輯:SO語法高亮顯示似乎與VB麻煩......
即使它是一個漫長的路線,它絕對值得探索....非常感謝你:-) – Raja 2010-02-24 12:45:43
語法高亮顯示不識別VB,因爲問題沒有VB標記。我添加了HTML註釋:'<! - language:lang-vb - >'來解決它。請參閱:[Markdown help:代碼的語法高亮顯示](http://stackoverflow.com/editing-help#syntax-highlighting)。 – 2017-05-03 12:51:59
在分配實際數據源之前,DataSource屬性具有一個由WinForms設計器分配的Type對象,該對象指定綁定對象的類型(而不是它們的集合的類型),當您使用對象綁定時。因此,您可以使用它來識別正確的綁定源。 – 2017-05-03 13:01:13