Form1 frmMain = new Form1();
frmMain.Show();
Application.Run();
现在,关闭主窗体并不会取消应用程序。在窗体中,我执行以下操作:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
new Thread(() =>
{
Thread.Sleep(5000); // Give enough time to see the message boxes.
Application.Exit();
}).Start();
}
现在,在控件上调用HandleDestroyed和Disposed事件。
public Form1()
{
InitializeComponent();
button4.HandleDestroyed += new EventHandler(button4_HandleDestroyed);
button4.Disposed += new EventHandler(button4_Disposed);
}
void button4_Disposed(object sender, EventArgs e)
{
MessageBox.Show("Disposed");
}
void button4_HandleDestroyed(object sender, EventArgs e)
{
MessageBox.Show("HandleDestroyed");
}
2条答案
按热度按时间im9ewurl1#
如果它在主窗体上,那么我认为该事件不会被调用。尝试在
FormClosing
事件中释放该控件以强制调用该事件:另一种方法是将
FormClosing
事件添加到UserControl
:或在Lambda方法中:
8iwquhpp2#
如果正在关闭的窗体不是主窗体,则调用HandleDestroyed事件。如果主窗体已关闭,则应用程序将中止,并且不再激发事件。
我做了一个测试,启动应用程序如下:
现在,关闭主窗体并不会取消应用程序。在窗体中,我执行以下操作:
现在,在控件上调用HandleDestroyed和Disposed事件。