我正在使用Microsoft Visual C#2008 Express。
在我的主要表单中,有一个X按钮可以关闭右上角的表单。如何向此按钮添加代码?在我的菜单中,我有一个“退出”项,它有清理和关闭我的数据库的代码。如果用户选择相同的代码作为退出方式,如何将相同的代码添加到此按钮?
谢谢!
-Adeena
答案 0 :(得分:12)
使用FormClosing事件应该抓住任何关闭表单的方法。
答案 1 :(得分:7)
在表单的“设计”视图中,在“属性”窗口中,选择“事件”按钮,然后向下滚动到“FormClosed”和“FormClosing”事件。
在表单关闭后调用FormClosed。
在表单关闭之前调用FormClosing,并允许您取消关闭,保持表单打开:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}
答案 2 :(得分:1)
如果您想询问用户“您确定要关闭此表单吗?”,请使用FormClosing
,您可以在其中设置Cancel = True
,表单将保持打开状态。
如果您只想在表单明确关闭时关闭某些资源,那么您使用FormClosed
事件。
如果你掌控整个代码,那就没关系了。但是,当事件的另一个处理程序保持表单打开时,您不希望发生的是使用FormClosing
清理资源。
答案 3 :(得分:0)
使用winform的Closed-Event。
答案 4 :(得分:0)
FormClosing / FormClosed允许您观看该表单的事件,该事件可能与退出的应用程序一致。但是,还有另一个可以连接的事件叫做Application.ApplicationExit。
在您的主要方法中:
Application.ApplicationExit += Application_ApplicationExit;
...
private static void Application_ApplicationExit(object sender, EventArgs e) {
// do stuff when the application is truly exiting, regardless of the reason
}
答案 5 :(得分:0)
此代码将捕获用户单击“X”或在表单上使用Alt-F4以允许您执行某些操作。我不得不使用它,因为我需要动作来调用我的结束事件,并且由于赛车事件而使用FormClosing事件时它不会调用它。
/// <summary>
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox
/// and forces it to call MyClose() instead of Application.Exit() as it would have.
/// This fixes issues where the threads will stay alive after the application exits.
/// </summary>
public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
MyClose();
base.WndProc(ref m);
}
答案 6 :(得分:0)
双击form'design中的退出按钮 只需调用Dispose()方法
即可答案 7 :(得分:0)
表格行动方法 //
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (e.CloseReason == CloseReason.WindowsShutDown) return;
switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo))
{
case DialogResult.No:
e.Cancel = true;
break;
default:
break;
}
}
答案 8 :(得分:0)
You can use form closing events choose or set closing event in properties window
You can add dialog conditions based on what task you want to perform before closing form
private void Form1_FormClosing(object sender,FormClosingEventArgs e)
{
Application.Exit();
//you can also use Application.ExitThread();
}