C# 模态窗
场景一
点击登录按钮,登录窗体关闭,主页面窗体打开
1、在 Program.cs中,开启登录窗体的模态窗
FrmLogin frmLogin = new FrmLogin();
frmLogin.ShowDialog();
2、在登录窗体中,在登录成功的逻辑后,设置登录窗体模态窗的状态,并关闭(ok)
if (isLogin)
{
MessageBox.Show("登录成功");
// 设置模态窗状态
this.DialogResult = DialogResult.OK;
}
3、在Program.cs中,判断登录模态窗的状态,为ok,则打开主窗体
if (frmLogin.DialogResult == DialogResult.OK)
{
Application.Run(new FrmMain());
}
场景二
登录窗体,点击注册按钮,注册完成,显示登录窗体
1、登录窗体,点击注册,打开注册模态窗,并隐藏登录窗体
FrmRegister frmRegister = new FrmRegister();
this.Hide();
// 打开注册模态窗
frmRegister.ShowDialog();
2、点击注册窗体注册按钮,设置注册模态窗的状态(ok,ok关闭模态窗)
this.DialogResult = DialogResult.OK;
3、在登录窗体中的注册按钮中,判断注册模态窗的状态,显示登录窗体
if (frmRegister.DialogResult == DialogResult.OK)
{
this.Show();
}
两一种方法,使用FormClosed(比上面的好)
在登录窗体中,当监听到关闭注册窗体(包括x),显示,当前的窗体(登录窗体)
private void btnRegister_Click(object sender, EventArgs e)
{
FrmRegister frmRegister = new FrmRegister();
// 注册模态窗关闭,触发
frmRegister.FormClosed += FrmRegister_FormClosed;
this.Hide();
// 打开注册模态窗
frmRegister.ShowDialog();
//if (frmRegister.DialogResult == DialogResult.OK)
//{
// this.Show();
//}
}
private void FrmRegister_FormClosed(object sender, FormClosedEventArgs e)
{
this.Show();
}