C# Winform 关闭Form而不销毁Form的内存
在winform程序中有的时候需要暂时关闭窗口并在需要的时候再次调出原来关闭的这个窗口(即关闭的时候不销毁该窗口的内存)实现方法如下:
Form.Designer.cs中有如下方法
/// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); }
Form右上角的关闭按钮被点击后会自动调用该方法销毁Form的句柄和占用内存,因此将其修改成
/// <summary> /// 在Form的关闭按钮按下的时候会调用该方法Hide窗口而不销毁窗口 /// </summary> protected override void Dispose(bool disposing) { Hide(); }
便可以实现在点击关闭按钮后不是真正的销毁关闭窗口而是将窗口Hide,在需要的时候再次调用该Form的Show()方法就可以再次调用出该窗口(注意:调用Show()方法只是让From显示但是不会被激活到电脑桌面其他窗口的前面,如果要让窗口激活到电脑桌面其他窗口前面的话需要调用Activate()方法)
但是这样一来Form就无法在需要的时候销毁释放内存了,可以采用折中的方法,抄写原来的Dispose方法为一个如下方法,在需要销毁From并释放内存的时候显示调用一下这个方法即可
/// <summary> /// 在需要销毁From的时候显示调用该方法将销毁Form并释放占用内存 /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> public void DisposeForm(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); }