Vb.net 使用directcast调用列表
我正在寻找一种避免使用selectcase访问特定列表的方法;我将在一个模块上有大约90个列表,根据列表框上选择的记录(手动填充数据库中大多数表的名称,但不是全部),我需要读取列表中的项目。所以我有这样的想法: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 '填充相关表格的代码\
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