C#在表单关闭上管理消息框



我有一个带子女表格的父母表格,由其父母单击按钮。

private void button3_Click(object sender, EventArgs e)
    {
        if (Application.OpenForms.OfType<Form2>().Count() < 1 )
        {
            Form2 form2 = new Form2();
            form2.Show(this);
        }
    }

在这两种表单上(父母和孩子)上,我有一个消息框,可以确认当前表单的关闭。

void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {         
        if (MessageBox.Show("Do you want to exit?",
                           "Close application",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Information) == DialogResult.No)
        {
            e.Cancel = true;
        }         
    }

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        //MessageBox.Show("You pressed: " + sender);
        if (MessageBox.Show("Do you want to close the child form?",
                           "Child form closing",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Information) == DialogResult.No)
        {
            e.Cancel = true;              
        }
    }

他们工作不错,但是当我尝试关闭程序时,通过关闭孩子打开父母表格,父母表格上的闭合事件也触发了孩子的消息框,所以我单击"是的,我想要关闭" double:对孩子的一次和父母的一次。

我如何管理这种情况,因此请通过关闭父母表格打开一个孩子表格的程序?

我通过在每个形式的事件中添加亲密原因找到了解决方案:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {          
        if (e.CloseReason == CloseReason.UserClosing)
        {
            if (MessageBox.Show("Do you want to exit?",
                           "Closing application",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Information) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
    }

希望这可以帮助任何人。

相关内容

  • 没有找到相关文章

最新更新