vb.net - 使用其名称作为字符串来调用单独的 Windows 窗体

标签 vb.net

我需要能够创建一个按钮,当我单击该按钮时,该按钮可以链接到不同的 Windows 窗体。但是,此按钮是动态生成的,有时可以根据需要链接到不同的表单。例如:

我的按钮可以链接到 FormA.vb 或 FormB.vb。我可以让按钮根据需要创建字符串“FormA”或“FormB”,但我不知道如何在屏幕上调用 FormA.vb 或 FormB.vb。

到目前为止,我一直在使用以下方法更改 Windows 窗体:

FormA.MdiParent = MainForm //My main form window
FormA.Show()

Me.Close()

但这显然不适用于:

"FormA".MdiParent = MainForm
"FormA".Show()

仅仅因为它们是字符串而不是类。

有没有办法让我的按钮链接正确?

提前致谢。

最佳答案

试试这个,你必须导入System.Windows.FormsSystem.Reflection

首先将表单名称放入strCreatedFromButton中,然后找到它。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim strCreatedFromButton As String = "Form3"

    Dim frm As New Form
    frm = DirectCast(CreateObjectInstance(strCreatedFromButton), Form)
    frm.Show()
End Sub

Public Function CreateObjectInstance(ByVal objectName As String) As Object
    Dim obj As Object
    Try
        If objectName.LastIndexOf(".") = -1 Then
            objectName = [Assembly].GetEntryAssembly.GetName.Name & "." & objectName
        End If

        obj = [Assembly].GetEntryAssembly.CreateInstance(objectName)

    Catch ex As Exception
        obj = Nothing
    End Try
    Return obj

End Function

关于vb.net - 使用其名称作为字符串来调用单独的 Windows 窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478165/

相关文章:

mysql - 无法通过 vb.net 验证 mysql

asp.net - 如何使用 vb.net 在文本框中检索当前登录的用户角色名称?

.net - 更新面板复制了我的控件

vb.net - 为什么这个多线程VB.NET(2010 Express Edition)程序不能正常工作?

vb.net - AxAcroPdf 加载后,执行某些操作

vb.net - Visual Studio 2015 中是否有 Visual Basic 交互式窗口?

sql - 是否可以有一个包含 Excel 文件为 "data source"的 SQL 数据库?

vb.net - 寻找用 OCaml 编写的 VBA/VB 解析器/编译器

vb.net - 在 Visual Studio 中关闭 VB.NET 的自动折叠?

vb.net - 如何在 Visual Studio 中更改菜单栏文本的前景色?