C# 窗体A跳转到窗体B 窗体B关闭后 A继续运行

不知道大家有没有碰到在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(),否则关闭的是整个程序。


版权声明:本文为u011630900原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。