ダブルクリック イベントでツリービューの選択されたノードに応じて、特定のフォームを起動しようとしています。新しいインスタンスを起動する前に、フォームが破棄されていないこと、およびフォームがまだ開いていないことを確認する必要があるため、フォームを起動するために使用する必要があるコードは少しかさばります。このすべてのチェックを関数の最後の 1 か所で実行したいと考えています。つまり、正しいフォーム タイプをコードの最後に渡せるようにする必要があります。System.Type でこれを実行しようとしていますが、うまくいかないようです。誰かが私を正しい方向に向けてもらえますか?
With TreeView.SelectedNode
Dim formType As Type
Select Case .Text
Case "Email to VPs"
formType = EmailForm.GetType()
Case "Revise Replacers"
formType = DedicatedReplacerForm.GetType()
Case "Start Email"
formType = EmailForm.GetType()
End Select
Dim form As formType
Dim form As formType
Try
form = CType(.Tag, formType)
If Not form.IsDisposed Then
form.Activate()
Exit Sub
End If
Catch ex As NullReferenceException
'This will error out the first time it is run as the form has not yet
' been defined.
End Try
form = New formType
form.MdiParent = Me
.Tag = form
CType(TreeView.SelectedNode.Tag, Form).Show()
End With