登陆窗体的关闭
2016-05-04 18:24
155 查看
建一个小Demo,在FrmLogin窗体输入用户名admin,点击登陆按钮,显示出FrmMain窗体。
这样做有什么弊端?就是hide并不会销毁登陆窗体,只是隐藏了,这时登陆窗体已经没用了,但一直在消耗资源。winform程序把程序关闭后就把资源释放了,但如果以后要做网站的话,网站是要一直跑的。这绝对是不允许的。
如何改进,开始是想把hide换成close,但主窗体是在登陆窗体中new出来的,close就都没了,肯定是不能close的。
这里登陆窗体显示为模态窗体。你只有给登陆窗体一个反馈,才可以做别的。
模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。
模态窗体不允许操作其他窗体(比如弹出的警告,只有给警告一个反馈(比如点个确定),才可以继续操作其他窗体),非模态窗体可以操作其他窗体。
反映到代码里,模态窗体就是你必须赋给我一个值(即给我一个反馈),否则不会继续执行下面的代码。
非模态窗体在显示时,程序可继续执行下面的代码。
非模态窗体:Show()
模态窗体:ShowDialog()
旧方法
先运行登陆窗体,然后在登陆窗体中验证,验证成功后show出主窗体,并把登陆窗体Hide隐藏。//Program中的代码 Application.Run(new FrmLogin()); //FrmLogin中的代码 private void btnLogin_Click(object sender, EventArgs e) { string uid = txtUid.Text.Trim(); if (uid=="admin") { FrmMain fMain = new FrmMain(); fMain.Show(); Hide(); } }
这样做有什么弊端?就是hide并不会销毁登陆窗体,只是隐藏了,这时登陆窗体已经没用了,但一直在消耗资源。winform程序把程序关闭后就把资源释放了,但如果以后要做网站的话,网站是要一直跑的。这绝对是不允许的。
如何改进,开始是想把hide换成close,但主窗体是在登陆窗体中new出来的,close就都没了,肯定是不能close的。
新方法
在Program中new出登陆窗体,然后在登陆窗体中判断是否登陆成功,然后将消息返回给Program,为OK的话Program销毁登陆窗体,并运行主窗体。这里登陆窗体显示为模态窗体。你只有给登陆窗体一个反馈,才可以做别的。
模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他窗体。
模态窗体不允许操作其他窗体(比如弹出的警告,只有给警告一个反馈(比如点个确定),才可以继续操作其他窗体),非模态窗体可以操作其他窗体。
反映到代码里,模态窗体就是你必须赋给我一个值(即给我一个反馈),否则不会继续执行下面的代码。
非模态窗体在显示时,程序可继续执行下面的代码。
非模态窗体:Show()
模态窗体:ShowDialog()
//Program中的代码 FrmLogin fLogin = new FrmLogin();//创建登陆窗体 fLogin.ShowDialog();//显示模态窗体 if (fLogin.DialogResult==DialogResult.OK)//判断返回的值 { fLogin.Dispose();//手动释放资源 Application.Run(new FrmMain()); //运行主窗体 } else { MessageBox.Show("用户名错误"); } //FrmLogin中的代码 private void btnLogin_Click(object sender, EventArgs e) { string uid = txtUid.Text.Trim(); if (uid=="admin") { DialogResult=DialogResult.OK; } else { DialogResult = DialogResult.No; } }
相关文章推荐
- swift -UITextField
- iOS自定义控制中心音乐播放 锁屏界面背景图片
- order by 多语句
- js之字符串
- GDOI2016总结
- 第九周&第十周周记
- jsp5 include forward param
- C++结构体类型作为函数参数
- Mysql之源码安装
- pyqt4 利用信号槽在子线程里面操作Qt界面
- android ShareSDK微信收藏弹出提示的修改
- 使用@ResponseBody时候spring mvc的配置
- objective-C之NSURL
- Nginx日志格式设置
- Linux设备模型(1)_基本概念
- 第八周项目3
- Hadoop生态系统概况(转)图文并茂说的不错
- wireshark解密本地https流量笔记
- hello
- Cocos2d-JS 数据持久化