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查询数据库之登陆窗体——机房收费总结(一)
机房收费系统已经做了很长一段时间了,虽然到目前为止,仍然没有结束,但已经结节尾声了.我感觉现在有必要回首总结一下整个机房收费系统. 除了结账做了一半,报表接触一点之外,其他的都基本上差不多了.从做过的 ...
随机推荐
- xenapi-add-support-for-vgpu
Model types 为了在vm中支持vgpu,问题在于vgpu是否应该被当作一个PCI设备, 虽然物理GPU不是一个SR-IOV设备,但vgpu却是以一个类似SR-IOV device上的VF赋给 ...
- review20
Pattern与Matcher类 模式匹配就是检索和指定模式匹配的字符串.java提供了专门用来进行模式匹配的Pattern类和Matcher类,这些类在java.util.regex包中. 模式对象 ...
- 数据链路层--PPP协议
数据链路层使用的信道主要有两种类型:点对点信道和广播信道. 点对点 路由器在转发分组时只使用了下面的三层. 链路是从一个结点到相邻结点的一段物理线路,中间没有其他交换结点. 必须有一些必要的通信协议来 ...
- 卸载 Oracle 的 JDK
mac $ java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_6 ...
- SQL Server 删除默认值
alter table st_FuelConvertPatternSetting alter column tank_max_size decimal(5,2) not null declare @c ...
- 开始学Python
怎么说,整体还是比较愚昧的.不知道该干什么,大学里学过C++,C语言,忘的差不多了.毕业了做的是SAP,自学过一段JAVA.总是东一榔头西一棒子,借口还是多. 那就说一些现状嘛,语言重在的是应用这个方 ...
- java学习笔记 --- 网络编程(网络的基础知识)
1.网络模型: |--OSI(open stystem Interconnection开放式系统互连) |--特点: 是一种异构系统互连的分层结构:提供了控制互连系统交互规则的标准骨架:定义一种抽象结 ...
- Apache Kafka:下一代分布式消息系统【转载】
简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交 ...
- EF各版本增删查改及执行Sql语句
自从我开始使用Visual Studio 也已经经历了好几个版本了,而且这中间EF等框架的改变也算是比较多的.本篇文章记录下各个版本EF执行Sql语句和直接进行增删查改操作的区别,方便自己随时切换版本 ...
- 释放Windows C盘空间 -- 虚拟内存和休眠文件
本文由Suzzz原创,发布于 http://www.cnblogs.com/Suzzz/p/4111718.html ,转载请保留此声明. 项目组有一Windows工作站, 由于需要使用Kinect最 ...