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