Why not just use a lambda that passes along the type of the form? You can use GetType
to find the textual name and use a simple constraint to allow instances to be created
AddHandler mi_FormName.Click, Sub(s, e) OnClick(Of FormName)
AddHandler mi_OtherForm.Click, Sub(s, e) OnClick(Of OtherForm)
The click handler would look essentially as follows
Private Sub OnClick(Of T As {New, Form})()
Dim name = GetType(T).Name
Dim F As Form
If Not IsNothing(modForms.CheckOpen(name)) Then
F = modForms.CheckOpen(name)
If F.IsDisposed Then
modForms.CheckOpen.Remove(name)
F = New T
F.Show()
ElseIf F.Visible = False Then
F.Show()
Else
F.BringToFront()
End If
Else
F = New T
F.Show()
End If
End Sub