【问题标题】:VB2008 Create Duplicate existing Form on runtimeVB2008 在运行时创建重复的现有表单
【发布时间】: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


【解决方案1】:

感谢 GSerg 的提示

问题解决 我需要做的就是替换

loadForm(myform)

loadForm(New myform)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多