Vb.net 使用directcast调用列表

Vb.net 使用directcast调用列表,vb.net,list,directcast,Vb.net,List,Directcast,我正在寻找一种避免使用selectcase访问特定列表的方法;我将在一个模块上有大约90个列表,根据列表框上选择的记录(手动填充数据库中大多数表的名称,但不是全部),我需要读取列表中的项目。所以我有这样的想法: Public relevantables_Table001作为列表(表001的)=新列表(表001的) 公共相关表格\u表格002作为(表格002的)列表=新列表(表格002的) '... 公共相关表格(表格999的列表)=新列表(表格999的列表) 类别表001 '填充相关表格的代码\

我正在寻找一种避免使用selectcase访问特定列表的方法;我将在一个模块上有大约90个列表,根据列表框上选择的记录(手动填充数据库中大多数表的名称,但不是全部),我需要读取列表中的项目。所以我有这样的想法:

Public relevantables_Table001作为列表(表001的)=新列表(表001的)
公共相关表格\u表格002作为(表格002的)列表=新列表(表格002的)
'...
公共相关表格(表格999的列表)=新列表(表格999的列表)
类别表001
'填充相关表格的代码\u Table001
末级
类别表002
'填充相关表格的代码\u Table002
末级
班级表999
'填充相关表格的代码\u Table999
末级
现在我需要阅读相关的列表,这取决于从列表框中选择的项目。例如,如果有人选择了
Table042
,我需要阅读列表中的项目
RelevantTables\u Table042


我正在尝试使用DirectCast实现此目的,但我不知道如何实现此目的。

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

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

For Each item in RelevantTables(42)
类别:

创建新列表:

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
属性获取列表对象

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

然后,您的
表。集合将是一个
列表(MyCustomClass)
,而不是一个字符串,这将为您提供每个集合项目3个项目-这是一个表。这符合你的需要吗

你如何填写列表框?用这个更新你的帖子。现在,手动;列表框列出了我数据库中的大多数表。
反射
是一种可能性,因为您可以创建一个字符串
“relevantables”&lsb.Text
=relevantables\u Table001,这将是字段的名称。稍微了解一下这些内容会有所帮助。
List(Of Table002)
实际上是Table002对象的列表还是新Table2对象的列表?表类使用继承吗?我正在阅读关于如何使用反射的文章,我只使用它来访问我以前创建的一些dll。列表(Table002)字面上是Table002对象的列表;在加载时,我运行relevantables_Table002.Add(New Table002(“NameOfTable”、“IDfield”、“Table Name Alias”))之类的操作,用我想要的字符串填充所有列表对象。我只是想找到一种方法来调用一个列表,不是用他的名字,而是用一个变量:read list“relevantables”&lsb.text非常感谢,这正是我想要的:)我能麻烦你最后一个问题吗?如果我能创建包含多列的列表(我需要3列),这将对我有很大帮助。我有代码来做这件事,我正试图把它应用到你提供的代码上。除此之外,再次感谢你们help@user3050422,这样行吗?总有一天,我解决了这个问题。非常感谢你,伙计,你真的帮了我:)
Public Class MyCustomClass
  Public Property Prop1 As String
  Public Property Prop2 As String
  Public Property Prop3 As String
End Class