不知道大家有没有碰到在C#中碰到窗体A要关闭但必须得到窗体B的登录验证,登录不成功就关闭B A继续运行。
这种方法网上大家也是各有说词,虽然也可以实现,但个人觉得有点繁琐 也不容易理解。
话不多说,先把代码贴出来。
A窗体:”
private void A_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确认是否退出?", "提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
CloseFrm cFrm = new CloseFrm();
if (cFrm.ShowDialog() == DialogResult.OK)
{
e.Cancel = false;//允许退出系统
}
else
{
e.Cancel = true;//阻止退出系统
}
}
else
{
e.Cancel = true;//阻止退出系统
}
}
这个是我要点击右上角叉号退出程序,点击确认后跳转到一个登陆验证界面,因为我这个是服务器,一般来说不能关闭的,但又怕不小心误操作关闭,所以在这里设置关闭验证界面。
B窗体:
private void 取消_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}
// 取消登录
private void 确认_Click(object sender, EventArgs e)
{
String username = textBox1.Text.ToString();
String password = textBox2.Text.ToString();
if (username == "admin" && password == "203010")
{
this.DialogResult = DialogResult.OK;
}
else
MessageBox.Show("用户名或密码不正确!");
}
//登陆成功后确认退出
网上大家说的方法有直接在Program.cs里面设置的,也有别的 ,个人感觉对一个初学者的我来说有点烦
大家应该都知道cFrm.ShowDialog()和cFrm.Show()的区别吧!前面是带有返回参数的,后面这个不带。所以我们完全可以利用这个返回参数来代表是否退出,返回OK 确认退出,否则不退出,这样保证原来的服务窗体继续运行。在确认里面不能直接写Close(),否则关闭的是整个程序。