MDI 激活子窗体的方法

最近做一个小应用程序,用到了MDI。以前看到过.NET MDI有发生MemoryLeak的问题,

没想到在.NET 3.5里依然存在。查了下资料,说是在有GridView窗体重画时,容易导致内存泄露。

因此在Show的外面套上了 SuspendLayout 和 ResumeLayout。目前为止还没再发生问题。

特此记录。下面这个方法是在父窗体里调用子窗体的方法,还是很通用的。

 

public void ShowChildForm<T>() where T : Form { List<Form> result = (from child in this.MdiChildren where child is T select child).ToList() as List<Form>; if (result != null && result.Count > 0) { Form form = (Form)result[0]; form.Activate(); } else { this.SuspendLayout(); Form form = (Form)Activator.CreateInstance<T>(); form.MdiParent = this; form.WindowState = FormWindowState.Maximized; form.Show(); this.ResumeLayout(); } }

 

 

你可能感兴趣的:(.net,null)