当我关闭窗体时,如何使它执行某些操作。
处理 FormClosed
事件。
为此,请在属性窗口的“事件”选项卡中,双击 FormClosed
事件以添加处理程序。
您可以将代码放在生成的 MyForm_FormClosed
处理程序中。
您也可以通过重写 OnFormClosed
方法来实现;为此,请在代码窗口中键入 override onformcl
,然后从 IntelliSense 中选择 OnFormClosed
。
如果要防止表单关闭,则应处理 FormClosing
事件,并将 e.Cancel
设置为 true
。
另外一种选择是覆盖 System.Windows.Forms.Form 的 OnFormClosed() 或 OnFormClosing() 方法。
是否使用该方法取决于问题的上下文,当表单将被多次子类化并且它们都需要执行相同的代码时,这种方法更加实用。
如果正在执行相同操作,则对于一两个实例,事件更为有用。
public class FormClass : Form
{
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
// Code
}
}
base.OnFormClosing(e)
。 - SLaksWinForms有两个事件可能会对您有用。
第一个是FormClosing
事件,在实际关闭窗体之前发生。在此事件中,您仍然可以访问窗体类中的任何控件和变量。您还可以通过设置e.Cancel = true;
(其中e
是作为第二个参数发送给FormClosing
的System.Windows.Forms.FormClosingEventArgs
)来取消窗体关闭。
第二个是FormClosed
事件,在窗体关闭后发生。此时,您无法访问窗体拥有的任何控件,但仍可以清理变量(例如关闭托管资源)。
FormClosing
和FormClosed
,因为Closing
和Closed
已被弃用。 - Powerlord为您的窗体添加一个事件处理程序,处理 FormClosed 事件。
public class Form1
{
public Form1()
{
this.FormClosed += MyClosedHandler;
}
protected void MyClosedHandler(object sender, EventArgs e)
{
// Handle the Event here.
}
}
public FormName()
{
InitializeComponent();
this.FormClosed += FormName_FormClosed;
}
private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
//close logic here
}
语法:
form_name.ActiveForm.Close();
例子:
{
Form1.ActiveForm.close();
}