有没有人写过通用的“LaunchForm”功能?对于我打开表单的所有菜单项,我想编写一个函数来启动表单,而不是多次编写相同的代码。
任何提示都会非常有用。
这是winforms + vb.net
感谢 TR
答案 0 :(得分:2)
你的意思是这样的吗?
C#
public F Launch<F>() where F : Form, new()
{
F dlg = new F();
dlg.MdiParent = this;
dlg.Show();
return dlg;
}
VB.NET
Public Function Launch(Of F As {Form, New})() As F
Dim dlg As New F()
dlg.MdiParent = Me
dlg.Show()
Return dlg
End Function
答案 1 :(得分:0)
您可以将表单类型附加到menuitem的.Tag属性。将单个事件处理程序连接到所有菜单项单击事件,并将.Tag属性值(表单类型)传递给创建新实例并显示它的函数。
或者,如果每个表单都是单例,您可以创建(MenuItem,Form)字典,预填充表单实例并执行相应的查找/显示。甚至可以跳过menuitem的.Tag属性中的字典和pop和实例。
有各种各样的选择,如果不知道预期用途,很难只提出一个。