截止表格C#

时间:2014-06-08 11:17:03

标签: c# winforms

最近我不得不编辑我的程序代码,以便在创建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
}

4 个答案:

答案 0 :(得分:2)

你可以停止听这样的事件

private void btn_PdfCreate_CloseForm_Click(object sender, EventArgs e)
{
    this.FormClosing -= Form1_FormClosing
    showPDf();
    Close();
}

答案 1 :(得分:1)

您可以使用CloseReason的{​​{1}}属性:

FormClosingEventArgs

答案 2 :(得分:0)

使用e.ClosingReason查明用户尝试关闭表单或其他内容是否触发了formClosing事件。

进一步阅读,请访问MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.formclosingeventargs.closereason(v=vs.110).aspx

答案 3 :(得分:0)

您无论如何都希望在创建pdf后关闭表单。所以在创建pdf之后调用Form的Dispose方法,如下所示,无需注册OnFormClosing事件

private void btn_PdfCreate_CloseForm_Click(object sender, EventArgs e)
{
    showPDf();
    this.Dispose();
}