[英]Closing Form C#
最近,我不得不编辑程序代码,以便在创建PDF后关闭表单。 在FormClosing()
有一个MessageBox.Show
是否关闭,具体取决于DialogResult
。 问题是当我尝试Close()
,它向我显示了MessageBox
,我需要关闭它而不显示它。 谢谢。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Exit?", "Exit", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
private void btn_PdfCreate_CloseForm_Click(object sender, EventArgs e)
{
showPDf();
// close pdf but skip MessageBox
}
您可以像这样停止收听事件
private void btn_PdfCreate_CloseForm_Click(object sender, EventArgs e)
{
this.FormClosing -= Form1_FormClosing
showPDf();
Close();
}
您可以使用CloseReason
的财产FormClosingEventArgs
:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.ClosingReason == CloseReason.UserClosing && MessageBox.Show("Exit?", "Exit", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
使用e.ClosingReason来了解是否由于用户试图关闭表单或其他原因而触发了formClosing事件。
要进一步阅读,请访问MSDN: http : //msdn.microsoft.com/zh-cn/library/system.windows.forms.formclosingeventargs.closereason( v= vs.110).aspx
无论如何,您都想在创建pdf后关闭表单。 因此,如下所示在创建pdf之后立即调用Form的Dispose
方法,而无需注册OnFormClosing
事件
private void btn_PdfCreate_CloseForm_Click(object sender, EventArgs e)
{
showPDf();
this.Dispose();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.