2017-09-30 36 views
0

我有一个功能,它看起来像这样:如何将表单作为函数参数传递?

Function SpawnForm(Form) 
    Dim Spawn As New Form With {.TopLevel = False, .AutoSize = False} 
    Try 
     Spawn.Dock = DockStyle.Fill 
     MainForm.SpawnPanel.Controls.Add(Spawn) 
     Spawn.Show() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
    Return Nothing 
End Function 

我想将参数传递到函数的其余部分,所以如果我要称呼其为这样:

SpawnForm(SettingsForm) 

它然后会在我的项目中生成名为SettingsForm的现有表单。

我知道这个问题是这样的:

Dim Spawn As New Form 

我应该怎么做不同的传递参数?

回答

1

您可以制作一些具有一定约束条件的泛型函数。这允许您在方法内部保留表单创建(而不是传递实例)。也从函数返回实例。

Private Function SpawnForm(Of T As {New, Form})() As T 
    Dim spawn As New T() With {.TopLevel = False, .AutoSize = False} 
    Try 
     spawn.Dock = DockStyle.Fill 
     MainForm.SpawnPanel.Controls.Add(spawn) 
     spawn.Show() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
    Return spawn 
End Function 

用法:

Dim mySettingsForm = SpawnForm(Of SettingsForm)() 
相关问题