我试图让windows form
在多个项目中重复使用。所以我认为这将是一个类库。我想要做的是将WindowsForm.Show()
称为静态调用。我试图创建一个类库但我无法获取图标的资源。然后我创建了一个WinForms
项目,但它想要一个新的'在program.cs中。我不想打电话
WindowsForm form = new WindowsForm()
form.show()
如何创建可重复使用的静态表单?我希望我能说清楚。
答案 0 :(得分:2)
要添加工厂方法,您可以执行以下操作:
public static MyForm ShowNew()
{
MyForm form = new MyForm();
return form;
}
关于资源,取决于您使用的图标。如果图标始终相同且始终如此,则将其添加到库属性/资源中(如果您没有看到它,请转到库项目属性,在选项卡 Resources 上,然后单击“添加”。否则,将一个参数添加到工厂方法(以及表单构造函数)并在调用表单时传递它:
public static MyForm ShowNew(Icon ico)
{
MyForm form = new MyForm(ico);
return form;
}
实例化时
MyForm.ShowNew(Properties.Resources.my_icon);
答案 1 :(得分:1)
另一种方法是像往常一样实现表单,将其包装在类似Singleton的类中:
public static class WindowsFormSingleton {
// A static instance of your form
private static WindowsForm _form;
// A singleton property to interact with the form.
public static WindowsForm Instance
{
get
{
if(_form == null) {
this._form = new WindowsForm();
}
else if(_form.IsDisposed) {
this._form = new WindowsForm();
}
return this._form;
}
}
}
...并使用如下的单例实例:
WindowsFormSingleton.Instance.Show();
注意:正如评论中所述的taffer一样,using a Factory method始终创建新实例将是更好的方法。