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

Is there any way to not re-create the instance of a form when is closed and opened again?

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

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

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

请注意,您可能仍想释放您隐藏的表单使用的任何其他资源,例如文件 and/or 连接。

附带说明一下,请记住,在不使用表单时将其保存在内存中会增加应用程序的内存占用。

您所描述的听起来像是单例模式。

private MyForm() {

}

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

有可能,Designer开始乱来,因为Constructor是private的。此外,您不能再 Dispose/Close 表格了。这迫使您使表单不可见而不是摆脱它们