Используйте прямую трансляцию для вызова списка
Я ищу способ избежать использования select case для доступа к конкретному списку; У меня будет около 90 списков в модуле, и в зависимости от записи, выбранной в списке (заполняется вручную именем большинства таблиц моей базы данных, но не всех), мне нужно прочитать элементы списка, Итак, у меня есть что-то вроде этого:
Public RelevantTables_Table001 As List(Of Table001) = New List(Of Table001)
Public RelevantTables_Table002 As List(Of Table002) = New List(Of Table002)
'...
Public RelevantTables_Table999 As List(Of Table999) = New List(Of Table999)
Class Table001
'code for populating RelevantTables_Table001
End Class
Class Table002
'code for populating RelevantTables_Table002
End Class
Class Table999
'code for populating RelevantTables_Table999
End Class
И теперь мне нужно прочитать соответствующий список, в зависимости от пункта, выбранного в списке. Например, если кто-то выбирает Table042
Мне нужно прочитать пункты списка RelevantTables_Table042
,
Я пытаюсь использовать DirectCast для этого, но я не могу понять, как это сделать.
2 ответа
Учебный класс:
Public Class Table
Public Tablename As String
Public Collection As New List(Of String)
Public Overrides Function ToString() As String
Return Me.TableName
End Function
End Class
Создать новый список:
Private RelevantTable_Table001 As New Table
RelevantTable_Table001.Tablename = "Table001"
RelevantTable_Table001.Collection.Add("stuff")
...
'add the class and it will display the TableName since we
'overrided the ToString function
lsb.Items.Add(RelevantTable_Table001)
'class objects can be stored in the listbox as an object
Получить объект List из SelectedItem
имущество.
Private Sub lsb_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim tableList = TryCast(DirectCast(sender, ListBox).SelectedItem, Table)
If tableList IsNot Nothing Then
'tableList is the reference to the table object you seek.
End If
End Sub
Чтобы составить список из нескольких объектов (столбцов в DGV), используйте пользовательский класс:
Public Class MyCustomClass
Public Property Prop1 As String
Public Property Prop2 As String
Public Property Prop3 As String
End Class
Тогда ваш Table.Collection
будет List(Of MyCustomClass)
вместо строки это даст вам 3 элемента для каждой коллекции - это таблица. Это соответствует вашим потребностям?
Составьте список списков, затем используйте нижний индекс для доступа к правильному списку, например:
Public RelevantTables As List(Of List(Of table))
For Each item in RelevantTables(42)