C# WinForm 关闭登陆窗体后进程还再内存怎么办?
问题:我们通常再制作WinForm应用程序的时候,运行程序的第一个窗口一般是登陆窗口。代码如下:
那么这种方式有一个弊端,这种启动方式,其实就是把登陆窗口设置为主窗体。因此,再登陆后,我们通常是调用Hide()方法将 这个登陆窗体隐藏,因此其实这个窗体还是占用内存。
那么,点击登陆后,调用Close()方法可以不?当然不可以,这种方式下,登陆窗口是主窗体,调用Close()就等于把整个程序关闭了。
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm()); }
我多番搜索和实践。由下面方法实现:
环境:开发环境Visual Studio 2010 LoginForm.cs是登陆窗口 MainFrom.cs是程序主窗口
主要思想:程序运行后先打开登陆窗口,主窗体在登陆窗口Login.DialogoResult==DialogReesult.OK时运行主窗体
实现方法:
首先在解决方案管理器(Program.cs)里的代码
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new LoginForm());
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form Login = new LoginForm();
Login.ShowDialog();//显示登陆窗体
if (Login.DialogResult == DialogResult.OK)
Application.Run(new MainForm());//判断登陆成功时主进程显示主窗口
else return; }
}
然后在登陆窗口(LoginForm.cs)的登陆按钮(bt_login)Click事件里:
private void bt_login_Click(object sender, EventArgs e)
{ if (this.tb_username.Text == "admin" && this.tb_password.Text == "")
{
this.DialogResult = DialogResult.OK;//关键:设置登陆成功状态
this.Close();
}
else
{
MessageBox.Show("用户名或者密码输入有误,请重新输入", "警告");
}
}
C# WinForm 关闭登陆窗体后进程还再内存怎么办?的更多相关文章
- winform关闭登录窗体打开主窗体的方法
实际使用 Program.cs代码 //声明一个线程 private static System.Threading.Mutex mutex; /// <summary> /// 应用程序 ...
- Winform 关闭Form而不销毁Form的内存
在winform程序中有的时候需要暂时关闭窗口并在需要的时候再次调出原来关闭的这个窗口(即关闭的时候不销毁该窗口的内存)实现方法如下: Form.Designer.cs中有如下方法 /// <s ...
- winform程序登陆后关闭登录窗体
用winform做程序的时候,我们一般都是在Program先启动登录窗体,然后登录成功后才创建主窗体,结果这就导致了登录窗体无法关闭 所以如果我们不在Program的程序入口先创建登录窗体的话就能完美 ...
- winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体
winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...
- winform 打开一个窗体,关闭一个窗体
例如 我要打开一个窗体b,关闭一个窗体a a中的代码添加: private void pictureBox5_Click(object sender, EventArgs e) { W_MainFo ...
- WinForm开发----关闭window窗体最好的办法
最近有一人问道,如何切换窗体.一想到这,我就想,不就是new一个form,然后就show么? 可是我发现,当你控制某个属性的时候,不是不能控制,只是很麻烦而已.有没有好的办法?当然有,咋办? 最简单最 ...
- winform打开唯一窗体、构造函数传值
制作登入窗体: 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form ...
- delphi制作登陆窗体
delphi登陆窗体的制作,就我知道的,可以有两种方法,一种是在工程文件中实现登陆窗体的动态调用,另一种就是在主窗体的OnCreate事件中动态创建登陆窗体,两种方法都需要将主窗体设置为Auto-cr ...
- VB查询数据库之登陆窗体——机房收费总结(一)
机房收费系统已经做了很长一段时间了,虽然到目前为止,仍然没有结束,但已经结节尾声了.我感觉现在有必要回首总结一下整个机房收费系统. 除了结账做了一半,报表接触一点之外,其他的都基本上差不多了.从做过的 ...
随机推荐
- eclipse web项目导入itellij idea并启动
概述 主要分为项目配置和tomcat配置两大步骤. 一.项目配置 打开idea,选择导入项 选择将要打开的项目路径后,继续选择项目的原本类型(后续引导设置会根据原本的项目类型更新成idea的项目),此 ...
- decimal与 float的区别
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表达法:不存储值的近似值. 定义 decimal 的列.变量和 ...
- shell 学习之脚本编写1
脚本要求: 执行脚本后 接受输入1,显示当前时间,并提示是否继续选择. 接受输入2,显示CPU负载,并提示是否继续选择. 接受输入3,显示剩余内存,并提示是否继续选择. 接受输入0,退出脚本. ·· ...
- Unity3D重要知识点(转)
Unity3D重要知识点 数据结构和算法很重要!图形学也很重要!大的游戏公司很看重个人基础,综合能力小公司看你实际工作能力,看你的Demo. 1.什么是渲染管道? 是指在显示器上为了显示出图像而经过的 ...
- LINUX CENTOS关机与重启命令详解
Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.s ...
- vue cli关闭eslint严格语法检查
eslint是一个JavaScript的校验插件,通常用来校验语法或代码的书写风格. 官方文档:https://eslint.org 这篇文章总结了eslint的规则:Eslint规则说明 1.关闭e ...
- ES6环境配置
1.电脑有node环境,运行npm init 2.cnpm i -D babel-core babel-preset-es2015 babel-preset-latest 3.创建.babelrc文件 ...
- python-Django初体验
1.搭建Django开发环境 2.创建工程与应用 CentOS6.5环境下 Python 2.6 ipython 1.2.1 Django 1.6.5 pip install -y django == ...
- HTTP协议 与 Requests库
HTTP协议 与 Requests库: 1 HTTP协议: 2 URL作为网络定位的标识: >>>> 用户通过url来定位资源 >>>> 然后通过 g ...
- XML数据库的尝试
首先祝大家新年快乐.身体健康,平安就是福气. 对于一般的个人迷你项目,数据量不大的时候,完全没有必要使用数据库,管理数据使用XML就可以了. 自己尝试写了一个XML数据库,插入1w条小记录,大概3M大 ...