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

    这个应该能解决你的问题

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

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程