2017-09-30 7 views
0

私が機能を持っており、それは次のようになります。Formを関数パラメータとして渡すにはどうすればよいですか?

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)() 
関連する問題