表单名称来自变量。我想从变量值打开Form。
在VBA中加载(“UserFormName”)将显示表单。但我不知道如何在VB.Net中做到这一点。
好吧,当然有人希望能够通过字符串名称打开表单。
当您创建vb.net winforms项目时,所有表单都可用作“基础”静态类。
您经常会看到很多代码,因此只需使用基本表单类。
如果我需要显示say form2,那么我真的不需要创建该表单的实例(除非你想拥有该表单的多个实例。所以一卡车的代码将简单地启动+使用“基础静态”类那种形式。
例如:
Form2.Show()
我认为这不是一种不好的做法,因为您认为在项目设置中“设置”启动表单的项目设置是什么?
它只是将内置的“mainForm”=实例设置为您的启动表单,并且它不会创建新实例。
所以,既然我们都同意了15年以上,那么在项目中设置启动表单的人并不是创建该表单的新实例,而是实际使用基类实例。这真是一个编程选择。
因此,按字符串名称显示(显示)表单的基本静态实例的代码如下所示:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim strForm As String = "Form1"
ShowFormByName(strForm)
End Sub
Public Sub ShowFormByName(strFormName As String)
System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(ProductName & "." & strFormName).show()
End Sub
Private Function FormByName(strFormName As String) As Form
Return System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(ProductName & "." & strFormName)
End Function
但是,上面包含一个辅助子程序,它将简单地“显示”构建在表单实例中。
上面还包含一个返回表单类型的函数,因为肯定很多开发人员更喜欢先创建表单的实例,然后“show()”它。
因此,我们经常需要多个实例,或者我们更喜欢创建表单对象的新实例的编码方法。
因此,我们使用第二个辅助函数来返回我们通过字符串传递的类型的表单对象。
因此,要显示form1的3个实例,但FIRST实例是基类,那么另外两个但是该表单的全新实例,我们有这样的代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim strForm As String = "Form1"
ShowFormByName(strForm)
Dim f1 As Form = FormByName(strForm)
Dim f2 As Form = FormByName(strForm)
f1.Show()
f2.Show()
End Sub
因此,上面的代码片段展示了如何显示内置的基类表单,而无需创建该表单的实例。
但是,我们加载的下两个表单是该表单的“新”实例“string”。
所以helper sub和helper函数将为您提供关于哪个偏好浮动您的船的选择。
Dim form = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(Application.ProductName & "." & MySubForm)
Dim frm As New Form
frm = form
frm.MdiParent = AFrmMainScreen
frm.WindowState = FormWindowState.Maximized
frm.Show()