在登录界面声明一个全局静态变量:
//全局静态变量
public static bool bisRelogin = false;
在登录界面显示主窗体,最好放在try{} catch{}中去捕获异常:
//显示主窗体
private void ShowMain()
{
this.Hide(); //隐藏登录界面
//实例化一个主界面
frmMain frm_main=new frmMain();
//设置主界面的父界面为登录界面,可以不用设
frm_main.Owner = this;
//dialog显示主界面
DialogResult DR = frm_main.ShowDialog();
if (DR == DialogResult.Cancel) //关闭事件
{
//全局静态变量 初始值为false
if (bisRelogin)
{
bisRelogin = false;
this.Show(); //显示登录界面
}
else
this.Close();
}
}
主界面的登出按钮事件,需要注意的是,在下边两种情况下调用Close不会释放窗体,
(1)窗体是多文档界面(MDI)应用程序就的一部分且是不可见的;
(2)使用ShowDialog显示该出窗体;
这些情况下需要手动的去调用Dispose来将窗体的所有控件都标记为需要进行垃圾回收。本例中就属于第二种情况
//登出功能
private void 登入登出TSItemLoginAndOut_Click(object sender, EventArgs e)
{
//释放资源,关闭窗体 设置全局变量
this.Dispose();
this.Close();
frmLogin.bisRelogin = true;
}