Używanie obiektu innego niż kolekcja jako źródła danych
Kilka komponentów struktury dotnet używa komponentu DataSource. Mam obiekt, który ma wiele ustawień, które mogą modyfikować źródło danych, które reprezentuje. Chciałbym ustawić ten obiekt jako rozwijane źródło danych zestawu ComboBoxes i DataGridViewComboBoxCells.
Mój problem pojawia się, gdy próbuję podłączyć urządzenie do ComboBoxa. Domyślam się, że ponieważ zmiany w DataSource mogą się zdarzyć po ustawieniu DataSource, muszę użyć jednej z tych rzeczy BindingSource, ale literatura MSDN ciągnie swój zwykły wybryk mówienia mi, co to jest źródło powiązań, nie mówiąc mi, co robi lub jak to działa.
Jaki jest najlepszy sposób na podpięcie tego obiektu jako DataSource / BindingSource?
EDYTOWAĆ:
Oczywiście ta klasa to śmieci, ale ilustruje ona rodzaj obiektu, który mam teraz.
Większość czasu jest w tej chwili w powietrzu, ale w zasadzie to, co pokazuje to, że moja klasa nie jest samą kolekcją, ale zawiera jedną. Muszę być w stanie poinstruować właściwość DataSource ComboBox, że znajduje się tutaj lista ulotna, i że powinna użyć tej listy jako źródła danych dla jej listy rozwijanej.
Public Class DynamicDataSource
Private basicList As New List(Of String)(New String() {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"})
Private _showEvensOnly As Boolean
Private _showNotContainingO As Boolean
Public Property ShowEvensOnly() As Boolean
Get
Return _showEvensOnly
End Get
Set(ByVal value As Boolean)
_showEvensOnly = value
End Set
End Property
Public Property ShowNotContainingO() As Boolean
Get
Return _showNotContainingO
End Get
Set(ByVal value As Boolean)
_showNotContainingO = value
End Set
End Property
Public Function GetDynamicList() As List(Of String)
Dim processMe As New List(Of String)(basicList)
If Me._showEvensOnly Then
For JJ As Integer = processMe.Count - 1 To 0 Step -1
If JJ Mod 2 = 0 Then
processMe.Remove(processMe(JJ))
End If
Next
End If
If Me._showNotContainingO Then
For JJ As Integer = processMe.Count - 1 To 0 Step -1
If processMe(JJ).ToUpper.Contains("O"c) Then
processMe.Remove(processMe(JJ))
End If
Next
End If
Return processMe
End Function
End Class