这是关于MDI的设置.NET WinForm的问题。
当主窗体创建MDI子窗体,主窗体的PropertyStore
拥有MDI子窗体的引用。 我不知道这是否会导致即使关闭子窗体地活着。 如果是这样,为了消除这种参考配置的子窗体时,我该怎么办?
孩子形式由示例代码调用:
//The code is in the main form.
var f = new FormMDIChild();
f.MdiParent = this;
f.Show();
这是关于MDI的设置.NET WinForm的问题。
当主窗体创建MDI子窗体,主窗体的PropertyStore
拥有MDI子窗体的引用。 我不知道这是否会导致即使关闭子窗体地活着。 如果是这样,为了消除这种参考配置的子窗体时,我该怎么办?
孩子形式由示例代码调用:
//The code is in the main form.
var f = new FormMDIChild();
f.MdiParent = this;
f.Show();
根据记录,在引用后所提供的解决方案不工作(虽然这是一个有点冒险)。 但是,泄漏也消失了,如果你打开和关闭另一个子窗体,看来MDI父只泄漏最后打开的孩子。
如果你想通过使用引用后围绕提到的工作修理泄漏,只是覆盖的MdiParent的OnMdiChildActivate方法...
protected override void OnMdiChildActivate(EventArgs e)
{
base.OnMdiChildActivate(e);
typeof(Form).InvokeMember("FormerlyActiveMdiChild",
BindingFlags.Instance | BindingFlags.SetProperty |
BindingFlags.NonPublic, null, this, new object[] { null });
}
我有一个类似的问题。 我发现这个论坛上发帖讨论这个问题,并提出解决方案但我不知道,如果这个属性在最近的服务包被删除,因为我似乎无法找到使用反射因此该解决方案是不是为我工作的性质。 我会继续环顾四周,让你知道,如果我找到另一种解决方案。