
C#中关闭窗口释放资源
如何在form1弹出form2时,把form1资源释放,我当前知识把form1.Hide()隐藏起来了,因为我在programe.cs里面Application.Run(...
如何在form1弹出form2时,把form1资源释放,我当前知识把form1.Hide()隐藏起来了,因为我在programe.cs里面Application.Run(new Form1()); 所以如果我写form1.close()会让整个程序退出,如何释放form1的资源
展开
1个回答
展开全部
不能释放,在C#里主窗口不能关闭,否则进程会退出。
除非引用 Microsoft.VisualBasic.ApplicationServices.dll,利用 VB.NET 里的 WindowsFormsApplicationBase 全局设置。
例如:
using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;
namespace BaseForm
{
class Program : WindowsFormsApplicationBase // 这里要使Program继承 WindowsFormsApplicationBase
{
public Program()
{
this.IsSingleInstance = true; // 是否启用单例模式
this.EnableVisualStyles = true; // 是否使用视觉样式
this.ShutdownStyle = ShutdownMode.AfterAllFormsClose; // 所有窗体都关闭后进程才退出
this.MainForm = new Form1(); // 设置起始Form
}
[STAThread]
static void Main(string[] args)
{
new Program().Run(args);
}
}
}
追问
哦,那我主窗口隐藏之后,会不会影响什么性能啥的, 我那个主窗口只是一个用户登录界面,用户登录输入账号和密码就可以进入的。有没有其他的思路或者解决方案,感觉让主窗口隐藏,不是资源浪费吗
追答
要么按照上面那样引入 VB.NET 的类来实现关闭 MainForm 不结束进程的。
而且首先你这个设计就不对,怎么能是登录窗体做 MainForm?MainForm,MainForm,那是主窗体啊。你应该把你的登录后的主窗体作为 MainForm,起初是隐藏的,并实例化一个登录窗体来,登录成功了就释放掉登录窗体并使主窗体显示出来。
你要是问“非法用户密码不对总停留在登录窗体上,主窗体先实例化了却一直不显示不占资源吗?”既然都是非法用户了你干嘛要考虑他们的资源占不占?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询