我有 2 个表格,FormA 和 FormB。从 FormB 按钮单击事件打开 FormA。在 FormA holder 中,注册了来自 FormA 的 FormClosed 事件。 问题是,如果我关闭 FormB,FormA 也会关闭,但不会调用 FormClosed 事件。
如何调用FormClosed事件?
我希望当 FormA 关闭/关闭以处置资源时通知 FormA Holder。
这是简化的代码片段:
internal class FormA : Form
{
public FormA()
{
this.Text = @"Form A";
}
}
internal class FormAHolder
{
internal FormA FormA { get; private set; }
internal FormAHolder()
{
this.FormA = new FormA();
this.FormA.FormClosed += this.OnFormAFormClosed;
}
private void OnFormAFormClosed(object sender, FormClosingEventArgs e)
{
Console.WriteLine("Hallo, please call me!!!");
//// Clean up code should be here....
}
}
internal class FormB : Form
{
public FormB()
{
this.Text = @"Form B";
var button = new Button { Text = @"Open Form A" };
button.Click += this.OnButtonClick;
this.Controls.Add(button);
}
private void OnButtonClick(object sender, EventArgs e)
{
var formAHolder = new FormAHolder();
formAHolder.FormA.Show();
}
}
[Test]
public void FormTest()
{
var formB = new FormB();
formB.ShowDialog();
}
最佳答案
您需要使用消息循环启动 FormB。
使用这个:
Application.Run(new FormB());
代替
var formB = new FormB();
formB.ShowDialog();
Application.Run确实如此,但你只能调用一次 pr。 线程
。
关于c# - 为什么 WinForm Form.FormClosed 事件不从窗体持有者触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20331281/