zhufusiji 2013-10-29 03:20 采纳率: 100%
浏览 2473
已采纳

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这个东西的。因为是改造项目,所以不能更改这种处理逻辑。

哪位知道,请指教,谢谢啦!

  • 写回答

1条回答 默认 最新

  • playandhappy 2013-10-30 14:30
    关注

    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 Sub
    
    Private Structure FormIndexAndName
        Dim Index As Int32
        Dim Name As String
    End Structure
    
    Sub New()
        ReDim Lists(-1)
    End Sub
    

    End Class

    这个应该能解决你的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!