C# Winform系统登录(登入/登出)架构设计


一个简单的Login to MainForm架构,该示范程序演示了登录功能的设计,登入时状态显示,系统登出及初始化主窗体等功能,仅供参考。
登录界面:
主窗体:
部分源码如下:
Program.cs
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//首先打开登陆窗体,登陆成功后初始化MDI主窗体
if (frmLogin.Login())
{
frmMain.CurrentMainForm.Show();//显示主窗体
Application.Run();
}
else//登录失败,退出程序
Application.Exit();
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
Login
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
if (false == this.ValidateInput()) return;
this.Cursor = Cursors.WaitCursor;
this.SetButtonEnable(false);
this.Update();//必须
this.ShowLoginInfo("正在验证用户名及密码");
if (SystemSecure.Login(txtUID.Text, txtPWD.Text)) //调用系统安全管理模块登录方法
{
//
//授权成功, 下载用户权限数据.....
//
//登录成功,初始化主窗体,初始化进度在登录窗体的状态栏显示
IMainForm MDI = frmMain.CreateMainFormInsatance();
//MDI.InitUserInterface(new StatusBarMessage(lblLoading));
MDI.InitUserInterface(new LabelMessage(label3));
this.DialogResult = DialogResult.OK; //成功
this.Close(); //关闭登陆窗体
}
else
{
this.ShowLoginInfo("登录失败,请检查用户名和密码!");
Msg.Warning("登录失败,请检查用户名和密码!");
}
}
catch
{
this.SetButtonEnable(true);
this.ShowLoginInfo("登录失败,请检查用户名和密码!");
Msg.Warning("登录失败,请检查用户名和密码!");
}
this.Cursor = Cursors.Default;
}
MainForm.InitUserInterface
public void InitUserInterface(IMsg status)
{
//
//在这里初始化主窗体,如:加载模块,生成菜单,下载公共缓存数据等操作...
//
try
{
this.SuspendLayout();
status.ShowMessage("正在初始化用户界面...");
status.ShowMessage("正在加载模块...");
status.ShowMessage("正在生成菜单...");
status.ShowMessage("正在下载公共缓存数据...");
status.ShowMessage("加载主窗体完成.");
this.ResumeLayout();
}
catch (Exception ex)
{ Msg.ShowException(ex); }
}
MainForm.menuLogout_Click
private void menuLogout_Click(object sender, EventArgs e)
{
if (!Application.AllowQuit) return; //程序不允许退出
if (!Msg.AskQuestion("真的要登出吗?")) return;
try
{
if (this.AnyDataChanged())
{
Msg.Warning("系统检测到有数据窗体没有保存,不能登出!");
return;
}
this.Hide();
if (frmLogin.Login())
{
frmMain.DisposeOldForm();//关闭旧的主窗体,释放内存
frmMain.CurrentMainForm.Show();//显示登录窗体
}
GC.Collect();
}
catch (Exception ex)
{
Msg.ShowException(ex);
}
}

扫一扫加微信


Source Code: