有没有办法在关闭和重新打开时不重新创建表单实例?

时间:2016-06-17 05:18:31

标签: c# forms instance recreate

我正在调试一个有三种形式的简单应用程序,我发现当我关闭一个表单,然后再次打开(单击显示相应表单的按钮)时,会创建表示该表单的对象再次。 我认为这会不必要地消耗资源。

那么,如何在程序执行时只创建所有表单的一个实例?

2 个答案:

答案 0 :(得分:4)

您应该可以连接到结束事件,而您需要的只是将要关闭的表单设置为隐藏而不是实际关闭它。然后,表单将通过Singleton提供,它负责表单本身的初始化和呈现。

请注意,您可能仍希望释放您隐藏的表单所使用的任何其他资源,例如文件和/或连接。

作为旁注,请记住,在不使用表单时将表单保留在内存中会增加应用程序的内存占用量。

答案 1 :(得分:1)

您所描述的内容听起来像是Singleton模式。

private MyForm() {

}

private static MyForm _instance;
public static MyForm Instance => _instance ?? (_instance = new MyForm());

有可能,Designer开始乱七八糟,因为构造函数是私有的。此外,您不能再处理/关闭表单。这迫使你使表格隐形而不是摆脱它们