登录——被忽略的事
来源:互联网 发布:点评10月国民经济数据 编辑:程序博客网 时间:2024/06/06 08:31
我们编写程序时,基本每次都需要一个登录框来进行登录。
通常我们的逻辑是这样的,让用户输入用户名、密码,如果验证成功则主窗体显示,登录窗口关闭。
<span style="font-size:18px;"><strong>if ( textBox1.Text == "1" && textBox2.Text=="1") { frmMain fm = new frmMain(); fm.Show(); this.Close (); }</strong></span>
这样逻辑上是对的,可是当我们真正的运行程序时会发现,主窗体闪一下,随之就关闭了。不用怀疑就是代码有问题,我们简单的改一下。
<span style="font-size:18px;"><strong>if ( textBox1.Text == "1" && textBox2.Text=="1") { frmMain fm = new frmMain(); fm.Show(); this.Hide(); }</strong></span>
这次登录成功了,我们发现我们的改动只是将登录窗体的关闭改为了隐藏,这时候登录成功,并且,就算主窗体出现后你再运行一句frmlogin.close(),所有已经打开的窗体都会关闭。
为什么让frmlogin.close()会出现问题呢?
因为主窗体是由登录窗口打开的,所以当我们关闭登录窗口是,主窗口也会被关闭,这是一个线程树或窗口树的关系,一个窗口关闭时,由它打开的所有的窗口都将关闭。
怎么解决这个问题呢?
直接让frmlogin.hide()不就行了吗,这可是会占用内存的,这样登录窗体只是被隐藏了,而没有被关闭,就算关闭frmMain这个窗体,该程序的进程还是在运行的。有没有更加专业的解决办法,答案是有的。
只要将Program.cs的应用运行代码加一个判断条件就可以了。
Program.cs中的代码:
<span style="font-size:18px;"><strong> frmLogin fl = new frmLogin(); fl.ShowDialog(); //将窗体显示为模式对话框 if (fl.DialogResult == DialogResult.OK) { Application.Run(new frmMain()); } else { return; }</strong></span>
登录窗体中的代码:
<span style="font-size:18px;"><strong> if ( textBox1.Text == "1" && textBox2.Text=="1") { this.DialogResult = DialogResult.OK; this.Close(); }</strong></span>
0 0
- 登录——被忽略的事
- 登录记住密码,容易被忽略的错误
- 共用体——经常被忽略的实用数据类型
- 图表—ArcGIS一直被忽略的功能
- 忽略的事
- 忽略的问题——margin重叠
- 被忽略的 UITableViewHeaderFooterView
- 被忽略的UITableViewHeaderFooterView
- 被忽略的注释
- java不能忽略的基础—String
- 被忽略的头文件
- 常被忽略的ExecuteWithParams
- CSS 被忽略的常识
- 被忽略的注释: //TODO
- scanf,那些被忽略的
- 经常被忽略的知识点
- 一些被忽略的CSS
- 被忽略的 explicit 关键字
- python通过面向对象程序设计方法 实现铅球运行轨迹的计算
- Android四大布局之表格布局行列位置控制
- The meaning of L before C string
- Android网络应用——疯狂android讲义笔记
- 73、JAVA中int、String的类型转换
- 登录——被忽略的事
- 设计模式笔记:访问者模式
- 线程安全
- 《单幅圆形鱼眼图像的校正》matlab程序
- js中利用prototype给类添加方法
- java类中定义接口的有哪些好处
- 车辆定位
- 今天开始点滴累计
- nyoj_31 5个数求最值