如何让窗体窗体在关闭时执行某些操作。C#Windows窗体:关闭时[进程]
回答
处理FormClosed
事件。
为此,请转到属性窗口中的事件选项卡,然后双击FormClosed
事件为其添加处理程序。
然后,您可以将您的代码放入生成的MyForm_FormClosed
处理程序中。
你也可以通过重写OnFormClosed
方法来解决这个问题。要在代码窗口输入override onformcl
,在IntelliSense中输入OnFormClosed
。
如果您希望能够阻止窗体关闭,请改为处理FormClosing
事件,并将e.Cancel
设置为true
。
为您的表单添加事件处理程序到FormClosed事件。
public class Form1
{
public Form1()
{
this.FormClosed += MyClosedHandler;
}
protected void MyClosedHandler(object sender, EventArgs e)
{
// Handle the Event here.
}
}
该事件已被弃用 – Ian 2010-05-25 15:25:23
@Ian - 修正了它。 – 2010-05-25 15:27:20
WinForms有两个事件,你可能想看看。
第一个,FormClosing
事件发生在窗体实际关闭之前。在这种情况下,您仍然可以访问窗体类中的任何控件和变量。您也可以通过设置e.Cancel = true;
(其中e
是作为FormClosing
的第二个参数发送的System.Windows.Forms.FormClosingEventArgs
)取消表格。
第二个,FormClosed
事件发生在窗体关闭后。此时,虽然仍然可以对变量进行清理(例如关闭受管资源),但无法访问表单所具有的任何控件。
public FormName()
{
InitializeComponent();
this.FormClosed += FormName_FormClosed;
}
private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
//close logic here
}
或者另一替代方案是重写从System.Windows.Forms.Form中的OnFormClosed()或OnFormClosing()方法。
您是否应该使用此方法取决于问题的上下文,并且当表单将被多次分类并且它们都需要执行相同的代码时,该方法更具有可用性。
如果您正在做同样的事情,事件对于一个或两个实例更有用。
public class FormClass : Form
{
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
// Code
}
}
语法:
form_name.ActiveForm.Close();
例子:
{
Form1.ActiveForm.close();
}
- 1. C#Windows窗体应用程序关闭
- 2. C#ArgumentOutOfRangeException关闭窗体时
- 3. Windows窗体关闭后不关闭?
- 4. Windows窗体:关闭,但不关闭
- 5. Windows窗体不关闭
- 6. 关闭Windows窗体时Excel锁定
- 7. C# - 如何关闭主窗体和子窗体(只有当主窗体关闭时子窗口才会关闭)
- 8. 关闭窗体关闭SQL连接(C#)
- 9. 关闭C#窗体应用程序
- 10. 窗体关闭时检测c#
- 11. 窗体关闭/显示 - C#
- 12. C#窗体窗体应用程序,从子窗体关闭父窗体
- 13. 在窗口关闭时运行窗体窗体线程
- 14. 当另一个窗体关闭时关闭窗体
- 15. 子窗体关闭时父窗体关闭
- 16. 线程完成时关闭窗体
- 17. Windows窗体模式窗体在基本窗体不活动时立即关闭
- 18. 关闭应用程序时,第二个窗体关闭
- 19. 禁用Windows窗体关闭按钮
- 20. 为什么我的windows窗体关闭?
- 21. 加载后立即关闭windows窗体
- 22. Windows窗体移除关闭按钮
- 23. Windows窗体将无法正常关闭
- 24. 如何在PowerShell中关闭Windows窗体?
- 25. 为什么windows窗体没有关闭
- 26. 如何从Windows窗体应用程序在C#中关闭控制台窗口?
- 27. .NET取消关闭窗体可防止在Windows上关闭它
- 28. 如何从Windows Forms 2.0中的子窗体关闭父窗体?
- 29. 关闭Windows窗体中的控件中的所有窗体
- 30. Windows窗体:等到另一个窗体关闭
没有 “关闭” 事件,只是 “FormClosed” - 相当直观 – 2012-05-31 12:24:51
@hello_earth:有一个'Closed'事件在.Net 1中;由于各种问题,它在.Net 2.0中被替换。最初的'Closed'事件仍然存在,因为兼容性,但是隐藏。 – SLaks 2012-05-31 12:55:08