关于C#WINFORM登录窗口的做法
2013-05-24 10:20
239 查看
前几天做一个程序,由于是基本新手,所以许多不会,现终于完事了,先记录下以便以后复习。
主要内容:
1、两个窗体frm_TPCalc(主窗体),frm_Login(登录窗口)
2、登录窗口要和主窗口皮肤一致,且主窗口支持换肤
---->要求登录窗口必须是主窗口的子窗体(目前水平认为必须这样,目前还是不行,因为虽然设置了但是子窗体关闭时主窗体才出来,无子窗体无法继承到)
3、登录窗口验证成功进入主窗体并将用户信息传入主窗体,验证失败仍然停留在登录窗口
---->3.1在子窗体定义属性获取用户信息然后主窗体调用;3.2主窗体要使用次用户信息的控件定义为公有;(这是自己最初的想法后来都不好使)
4、登录窗口直接退出(退出button或X)时,整个程序退出。
---->application.exit();是的用这个就行。(失败了)
用了几天做完后发现存在1个问题:登录窗口退出时,会出现窗口闪动,代码逻辑肯定有问题。
主要错误原因是登录窗口是主窗口ShowDialog出来的,子窗体关闭时回返回主窗体,用appliaction.exit了就会出现闪窗。
然后看网上些什么线程之类的也不会,然后就发帖请教。
继续改....直到成功代码如下:
在Program.cs中定义一个静态变量,用来实现登录窗口值的回传,这样就不必考虑frm_Login关闭时,frm_TPCalc还没有加载,无法将信息传入的尴尬,中转一下。
然后是直接ShowDialog出frm_Login,当frm_Login返回OK时(验证成功),才加载frm_TPCalc.
代码如下:
然后在frm_Login中定义验证成功是返回DialogResult.OK
最后在frm_TPCalc中读取用户信息
整完后看看很简单,主要难处是不了解C#窗体加载事件流程和窗体传值的几种方法,还需继续学习。
现在还存的问题是加载皮肤后太卡,先寻找高效率的第三方皮肤,然后学习自己做或学习WPF(看着很好)。
然后就是想弄个验证成功后的启动画面,据说要用多线程,然后学习多线程,现在从网上下了点源码先弄出个样子看看。
主要内容:
1、两个窗体frm_TPCalc(主窗体),frm_Login(登录窗口)
2、登录窗口要和主窗口皮肤一致,且主窗口支持换肤
---->要求登录窗口必须是主窗口的子窗体(目前水平认为必须这样,目前还是不行,因为虽然设置了但是子窗体关闭时主窗体才出来,无子窗体无法继承到)
3、登录窗口验证成功进入主窗体并将用户信息传入主窗体,验证失败仍然停留在登录窗口
---->3.1在子窗体定义属性获取用户信息然后主窗体调用;3.2主窗体要使用次用户信息的控件定义为公有;(这是自己最初的想法后来都不好使)
4、登录窗口直接退出(退出button或X)时,整个程序退出。
---->application.exit();是的用这个就行。(失败了)
用了几天做完后发现存在1个问题:登录窗口退出时,会出现窗口闪动,代码逻辑肯定有问题。
主要错误原因是登录窗口是主窗口ShowDialog出来的,子窗体关闭时回返回主窗体,用appliaction.exit了就会出现闪窗。
然后看网上些什么线程之类的也不会,然后就发帖请教。
继续改....直到成功代码如下:
在Program.cs中定义一个静态变量,用来实现登录窗口值的回传,这样就不必考虑frm_Login关闭时,frm_TPCalc还没有加载,无法将信息传入的尴尬,中转一下。
然后是直接ShowDialog出frm_Login,当frm_Login返回OK时(验证成功),才加载frm_TPCalc.
代码如下:
namespace Test { static class Program { public static string username; /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //修改入口函数的首出窗口 frm_Login f_login = new frm_Login(); if (f_login.ShowDialog() == DialogResult.OK) { Application.Run(new frm_TPCalc()); } } } }
然后在frm_Login中定义验证成功是返回DialogResult.OK
namespace ThermalPowerTool { public partial class frm_Login : Form { public frm_Login() { InitializeComponent(); } private void btn_login_Click(object sender, EventArgs e) { if (TUser.Text != "" && TPwd.Text != "") { if (TUser.Text == "test" && TPwd.Text == "test") { //验证成功后将用户名传给Program定义的变量username Program.username = TUser.Text.Trim(); //定义验证成功时返回值 this.DialogResult = DialogResult.OK; MessageBox.Show("登录成功!"); } else { MessageBox.Show("账户或密码错误!"); } } else { MessageBox.Show("请输入账户和密码!"); } } } }
最后在frm_TPCalc中读取用户信息
private void frm_TPCalc_Load(object sender, EventArgs e) { //加载皮肤文件 skinEngine1.SkinFile = System.Windows.Forms.Application.StartupPath +@"\Themes\DeepOrange.ssk"; User.Text ="欢迎你:"+ Program.username; User.Enabled = false; }
整完后看看很简单,主要难处是不了解C#窗体加载事件流程和窗体传值的几种方法,还需继续学习。
现在还存的问题是加载皮肤后太卡,先寻找高效率的第三方皮肤,然后学习自己做或学习WPF(看着很好)。
然后就是想弄个验证成功后的启动画面,据说要用多线程,然后学习多线程,现在从网上下了点源码先弄出个样子看看。
相关文章推荐
- 比较经典的为C# Winform程序设置登录窗体先启动,成功后再启动主窗口。
- C# winform登录窗口关闭方法
- C# Winform中实现主窗口打开登录窗口关闭的方法
- 比较经典的为C# Winform程序设置登录窗体先启动,成功后再启动主窗口
- C# Winform中实现主窗口打开登录窗口关闭的方法
- 比较经典的为C# Winform程序设置登录窗体先启动,成功后再启动主窗口
- C# WinForm登录窗口代码
- C# Winform中实现主窗口打开登录窗口关闭的方法
- C# winform登录窗口关闭方法
- C# WinForm登录窗口原理代码 分享
- 在c#的winform登录窗体中,如何实现窗口验证码
- C# Winform中实现主窗口打开登录窗口关闭的方法
- C# WinForm登录窗口代码
- C# winform登录窗口关闭方法
- C# Winform中实现主窗口打开登录窗口关闭的方法
- 关于获取c# 的winform中DataGird控件选中行的值
- c# winform 设置winform进入窗口后在文本框里的默认焦点
- c# winform窗口一直置顶显示在桌面最上方或最底层的方法
- C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试
- C#/winform 指定窗口显示位置的方法