我正在尝试实现一些代码,询问用户是否要退出我已经制作的应用程序。
它位于c#中,是一个Windows窗体应用程序。
本周我的睡眠很少,似乎无法理解onFormClosing事件。有些人可以告诉我当用户点击关闭按钮(右上角的'x')时我应该使用的确切代码来执行代码。
请在心里找到帮助睡眠不足的白痴。
答案 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
}