通用开放式功能

时间:2011-10-12 13:00:19

标签: vb.net winforms generics

有没有人写过通用的​​“LaunchForm”功能?对于我打开表单的所有菜单项,我想编写一个函数来启动表单,而不是多次编写相同的代码。

任何提示都会非常有用。

这是winforms + vb.net

感谢 TR

2 个答案:

答案 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和实例。

有各种各样的选择,如果不知道预期用途,很难只提出一个。