C#中关闭窗口释放资源

如何在form1弹出form2时,把form1资源释放,我当前知识把form1.Hide()隐藏起来了,因为我在programe.cs里面Application.Run(... 如何在form1弹出form2时,把form1资源释放,我当前知识把form1.Hide()隐藏起来了,因为我在programe.cs里面Application.Run(new Form1()); 所以如果我写form1.close()会让整个程序退出,如何释放form1的资源 展开
 我来答
然后去远足
2014-12-27 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2615万
展开全部

不能释放,在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,起初是隐藏的,并实例化一个登录窗体来,登录成功了就释放掉登录窗体并使主窗体显示出来。

你要是问“非法用户密码不对总停留在登录窗体上,主窗体先实例化了却一直不显示不占资源吗?”既然都是非法用户了你干嘛要考虑他们的资源占不占?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式