【发布时间】:2015-08-09 07:52:44
【问题描述】:
您好,我想在运行时复制现有表单,以便可以多次使用。有一种方式像
Sub loadForm()
Dim childForm As New myForm '<---
With childForm
.TopLevel = False
.StartPosition = FormStartPosition.CenterScreen
.Top = 199
.BringToFront()
Panel1.Controls.Add(childForm)
.Show()
End With
End Sub
但我想要的表格应该与我尝试过的参考重复
Sub LoadForm(ByVal childForm As Form)
'where childForm can be any myform1/mysale/mypurchase etc.
With childForm
.TopLevel = False
.StartPosition = FormStartPosition.CenterScreen
.Top = 199
.BringToFront()
Panel1.Controls.Add(childForm)
.Show()
End With
End Sub
我打电话的地方
LoadForm(myform1)
LoadForm(mysale)
这不重复我也尝试过创建
Dim newChildForm as new childForm ' its give error 1 Type 'childForm' not defined
【问题讨论】:
-
Visual Basic 允许您 use the type name of a form as a variable 神奇地保存该表单的隐式创建实例。您不应使用此功能。始终使用
New创建表单实例,并且永远不要使用其类型名称引用实例。如果仅此一项不能解决您的问题,请澄清。 -
在这些 sn-ps 中没有明显的“复制”尝试。无论如何都无法工作,您无法克隆表单对象。您需要
New myForm1来创建另一个实例。这里最明显的缺陷是您在完全相同的位置显示表单,您只能看到最上面的一个。改用 FlowLayoutPanel。或者选择一个合适的位置。 -
hans-passant 显示位置是固定的,但我拖动该表单并调用 LoadForm 它将重新定位我拖动的表单。
标签: vb.net