【发布时间】:2021-06-23 22:43:20
【问题描述】:
如何获取对象类型以便直接转换为它?这是我想要执行的理想方法:
Dim MyObjects As New List(Of Object)
For Each O As Object In GlobalFunctions.GeneralFunctions.FindControlsRecursive(MyObjects, Form)
Select Case True
Case TypeOf O Is MenuStrip Or TypeOf O Is ToolStripButton Or TypeOf O Is Panel Or TypeOf O Is Label Or TypeOf O Is ToolStripSeparator
AddHandler DirectCast(O, O.GetType).Click, AddressOf GotFocus
End Select
Next
我正在尝试使代码更高效,这样我就不必直接转换为指定的对象类型。例如:
Dim MyObjectsAs New List(Of Object)
For Each O As Object In GlobalFunctions.GeneralFunctions.FindControlsRecursive(MyObjects, Form)
Select Case True
Case TypeOf O Is MenuStrip
AddHandler DirectCast(O, MenuStrip).Click, AddressOf GotFocus
Case TypeOf O Is Panel
AddHandler DirectCast(O, Panel).Click, AddressOf GotFocus
Case TypeOf O Is ToolStripButton
AddHandler DirectCast(O, ToolStripButton).Click, AddressOf GotFocus
Etc...
End Select
Next
编辑
据我所知,ToolStripItem (ToolStripButton) 不是Control,所以我不能在这种情况下使用List(Of Control)。当我第一次使用控件列表时,工具条项目不包括在内。这是我第一次在应用程序中使用ToolStrip,所以直到现在我都没有理由不使用List(Of Control)。
【问题讨论】:
-
Dim MyObjectsAs New List(Of Control)? -
在大多数情况下,我只使用
List(Of Control),但是,ToolStripButton不会包含在列表中。所以我的解决方法是创建一个List(Of Object)并将所有内容都包含在其中。 @GSerg
标签: vb.net directcast