问题描述
- VB.net根据类的名字动态使用某个类
- 我想实现类似于Java中Class.ForName(XXX)这个功能。具体说明如下
我现在有一个变量存放Form的名称,然后我想根据这个变量直接判断该调用哪个Form的ShowDialog方法
如果无法根据名字获取的话,我只能这样写:
Select Case vFormName Case ""frm001"" frm001.ShowDialog Case ""frm002"" frm002.ShowDialog...
那有没有某种方法可以实现如下:
DirectCast(XXXXXX(vFormName) Form).ShowDialog
补充说明:不能用new的形式,比如 vForm = new XXXX(vFormName)因为项目中有功能要求是要全局使用frm001这个东西的。因为是改造项目,所以不能更改这种处理逻辑。
哪位知道,请指教,谢谢啦!
解决方案
Public Class MyForm
Inherits System.Collections.CollectionBase
Private Lists() As FormIndexAndName
Default Public ReadOnly Property Item(ByVal Name As String) As System.Windows.Forms.Form
Get
Dim i As Int32
For i = 0 To Lists.Length - 1
With Lists(i)
If .Name = Name Then
Return Me.List.Item(.Index)
End If
End With
Next
Return Nothing
End Get
End Property
Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Form Name As String) ReDim Preserve Lists(Lists.Length) Lists(Lists.Length).Name = Name Lists(Lists.Length).Index = Me.List.Count Me.List.Add(btnItem)End SubPrivate Structure FormIndexAndName Dim Index As Int32 Dim Name As StringEnd StructureSub New() ReDim Lists(-1)End Sub
End Class
这个应该能解决你的问题
时间: 2024-08-31 10:31:23