c# 在表单关闭时管理消息框
c# managing messageboxes on form closing
我有一个 parent 表单和一个 child 表单,通过单击按钮由其 parent 调用。
private void button3_Click(object sender, EventArgs e)
{
if (Application.OpenForms.OfType<Form2>().Count() < 1 )
{
Form2 form2 = new Form2();
form2.Show(this);
}
}
在两个表单(parent 和 child)上,我都有一个消息框来确认当前表单的关闭。
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;
}
}
它们运行良好,但是当我尝试关闭程序时,通过关闭 child 打开的 parent 表单,parent 表单上的关闭事件也会触发消息框在 child 上,所以我必须单击 "Yes i want to close" 两次:一次在 child 上,一次在 parent..
上
我该如何处理这种情况,从而退出通过关闭 parent 表单打开了一个 child 表单的程序?
我通过在每个 FormClosing 事件中添加关闭原因找到了解决方案:
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;
}
}
}
希望对大家有所帮助。
我有一个 parent 表单和一个 child 表单,通过单击按钮由其 parent 调用。
private void button3_Click(object sender, EventArgs e)
{
if (Application.OpenForms.OfType<Form2>().Count() < 1 )
{
Form2 form2 = new Form2();
form2.Show(this);
}
}
在两个表单(parent 和 child)上,我都有一个消息框来确认当前表单的关闭。
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;
}
}
它们运行良好,但是当我尝试关闭程序时,通过关闭 child 打开的 parent 表单,parent 表单上的关闭事件也会触发消息框在 child 上,所以我必须单击 "Yes i want to close" 两次:一次在 child 上,一次在 parent..
上我该如何处理这种情况,从而退出通过关闭 parent 表单打开了一个 child 表单的程序?
我通过在每个 FormClosing 事件中添加关闭原因找到了解决方案:
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;
}
}
}
希望对大家有所帮助。