我有一个带子女表格的父母表格,由其父母单击按钮。
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;
}
}
}
希望这可以帮助任何人。