繁体   English   中英

结帐表格C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM