C#表格结束活动

时间:2014-04-30 16:33:37

标签: c# messagebox formclosing

我是学校的初级程序员,我们必须做一个大项目,我的表格有一个问题,特别是我自己制作的表格“闭幕活动”。

 private void sluitenToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (MessageBox.Show("Het programma wordt hiermee gesloten.\nBent u zeker dat u wilt sluiten en uitloggen?",
            "Waarschuwing , u staat op het moment het programma te sluiten",MessageBoxButtons.YesNo, 
            MessageBoxIcon.Exclamation) == DialogResult.Yes)
        {
            Application.Exit();
        }
    }

    private void window_Closing(object sender, FormClosingEventArgs e)
    {
        if(MessageBox.Show("Bent u zeker dat u wilt uitloggen?","Waarschuwing , u staat op het moment uit te loggen",
             MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
        {

            loginForm.Show();
        }
        else
        {
            e.Cancel = true;
        }

现在我的问题是当我使用sluitenToolStripMenuItem_Click并按下yes按钮时它将关闭我的应用程序,这将触发window_Closing事件。 但我只想在我的用户点击右上角的大红色X而不是用户点击我的工具条项目时发生window_Closing事件。 提前谢谢你 此外,如果任何人有任何关于制作一个好的GUI的提示,那将是很好的;) (我来自比利时,很抱歉我的代码中的荷兰人)

2 个答案:

答案 0 :(得分:2)

您可以保留一个变量来存储生成事件的状态。

bool ClosedFromMenu = false;
private void sluitenToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Het programma wordt hiermee gesloten.\nBent u zeker dat u wilt sluiten en uitloggen?",
        "Waarschuwing , u staat op het moment het programma te sluiten",MessageBoxButtons.YesNo, 
        MessageBoxIcon.Exclamation) == DialogResult.Yes)
    {
        ClosedFromMenu = true;
        Application.Exit();
    }
}

private void window_Closing(object sender, FormClosingEventArgs e)
{
   if(!ClosedFromMenu)
   {
    if(MessageBox.Show("Bent u zeker dat u wilt uitloggen?","Waarschuwing , u staat op het moment uit te loggen",
         MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
    {

        loginForm.Show();
    }
    else
    {
        e.Cancel = true;
    }
   }
}

答案 1 :(得分:1)

FormClosing活动中,您可以查看sendere.CloseReason

例如,在FormClosing事件处理程序中的代码之后:

if (e.CloseReason != CloseReason.UserClosing)
{
    //......
}

如果您按下Alt+F4或点击[X]按钮,则不会执行。

http://msdn.microsoft.com/en-us/library/system.windows.forms.closereason%28v=vs.110%29.aspx