繁体   English   中英

C#中onFormClosing的问题

[英]Troubles with onFormClosing in c#

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

它在c#中,是Windows窗体应用程序。

这个星期我很少睡觉,似乎无法理解onFormClosing事件。 可以给我确切的代码,我应该使用该代码来执行当用户单击关闭按钮(右上角的“ x”)时执行的代码。

请在您的心中找到它,以帮助失眠的白痴。

嗯,该事件称为FormClosing并且可以取消。 订阅它,完成您的工作,然后让用户关闭其表单。 如果使用“ x”按钮或您自己关闭表单,则会触发此事件。

您可以通过突出显示表单并在属性窗口的事件选项卡中(如SLaks所说)在设计器中对其进行订阅,然后双击它。 您无需做任何特殊的事情即可应对“ x”按钮。

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

FormClos ing事件使您可以通过设置e.Cancel = true来防止表单关闭。

最简单的方法是在设计器中激活表单,然后在属性窗口中找到事件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,则如果您不先退出程序,它将阻止Windows关闭,这不是一个好习惯。

从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);
}
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;
    }

我希望这有帮助

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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