使用c#中的onFormClosing进行故障

时间:2011-08-24 13:43:30

标签: c# .net visual-studio-2010

我正在尝试实现一些代码,询问用户是否要退出我已经制作的应用程序。

它位于c#中,是一个Windows窗体应用程序。

本周我的睡眠很少,似乎无法理解onFormClosing事件。有些人可以告诉我当用户点击关闭按钮(右上角的'x')时我应该使用的确切代码来执行代码。

请在心里找到帮助睡眠不足的白痴。

6 个答案:

答案 0 :(得分:3)

嗯,该事件被称为FormClosing并且可以取消。订阅它,做你的东西,让用户关闭他们的表格。如果使用“x”按钮或您自己关闭表单,则会触发此事件。

您可以在设计器中订阅它,方法是突出显示表单并查看属性窗口的事件选项卡,如SLaks所示,然后双击它。您无需执行任何特殊操作来处理“x”按钮。

答案 1 :(得分:3)

在设计器的“属性”窗口的“事件”选项卡中双击表单的FormClosed事件。

FormClosing事件允许您通过设置e.Cancel = true来阻止表单关闭。

答案 2 :(得分:1)

最简单的方法是在设计器中激活表单并在属性窗口中找到事件FormClosing,然后双击该事件。

然后执行以下操作:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.UserClosing)
        {
            var result = MessageBox.Show("Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo);
            if (result != System.Windows.Forms.DialogResult.Yes)
            {
                e.Cancel = true;
            }
        }
    }

如果您没有指定原因必须是UserClosing,那么如果您不首先退出程序,它将阻止窗口关闭,这不是一个好习惯。

答案 3 :(得分:0)

从System.Windows.Forms.Form派生你的表单并放置此覆盖:

protected override void OnFormClosing(CancelEventArgs e)
{
    if (bWrongClose)
    {
        bWrongClose = false;
        e.Cancel = true; // this blocks the `Form` from closing
    }
    base.OnFormClosing(e);
}

答案 4 :(得分:0)

public Form1()
    {
        InitializeComponent();
        this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
    }

    void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (MessageBox.Show("Are you sure that you wan't to close this app", "Question", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            e.Cancel = true;
    }

我希望这会有所帮助

答案 5 :(得分:0)

您可以手动添加事件处理程序。在构造函数中添加事件处理程序的示例:

public frmMain()
{
   InitializeComponent();
   FormClosing += frmMain_FormClosing;
}

private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
    //your code
}