0

我正在寻找一种避免使用选择案例访问特定列表的方法;我将在一个模块上有大约 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,但我不知道该怎么做。

4

2 回答 2

0

制作列表列表,然后使用下标访问正确的列表,例如

Public RelevantTables As List(Of List(Of table)) 

For Each item in RelevantTables(42)
于 2014-10-30T18:27:21.230 回答
0

班级:

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

SelectedItem属性中获取 List 对象。

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 个项目 - 这是一个表。这符合您的需求吗?

于 2014-10-30T18:46:05.093 回答