2015-08-09 23 views
0

您好我想在運行時複製現有表單,以便可以多次使用。有喜歡VB2008在運行時創建重複的現有表單

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 
+0

的Visual Basic允許你[作爲變量使用的一種形式的類型名稱](http://stackoverflow.com/q/6048889/11683),神奇地擁有該表單的隱式創建的實例。你不應該使用這個功能。使用'New'總是創建表單的實例,並且絕對不要使用其類型名稱引用實例。如果這一點不能解決您的問題,請澄清。 – GSerg

+0

在這些片段中沒有明顯的「重複」嘗試。無論如何,你無法克隆表單對象。你需要'新建myForm1'來創建另一個實例。這裏最明顯的缺陷是你在同一個位置顯示錶格,你只能看到最上面的一個。改爲使用FlowLayoutPanel。或者選擇一個合適的位置。 –

+0

hans-passant顯示位置是固定的,但我拖動該窗體並調用LoadForm它將重新定位我已經繪製的窗體。 – mortypk

回答

0

感謝GSerg的提示

解決問題 所有我需要做的是更換

loadForm(myform) 

loadForm(New myform)