一.避免重复打开窗体
/// <summary>
/// 传入要打开的窗体实例
/// </summary>
/// <param name="frm"></param>
public void OpenForm(System.Windows.Forms.Form frm)
{
if (frm == null) return;
foreach (System.Windows.Forms.Form f in Application.OpenForms)
{
if (f.Name == frm.Name)
{
f.Activate();
f.Show();
frm.Dispose();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
return;
}
}
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
frm.Show();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
}
调用
private void btnsUserManage_Click(object sender, EventArgs e)
{
frmUserManage fL = new frmUserManage();
OpenForm(fL);
}
二、避免重复打开子窗体
/// <summary>
/// 需要显示子窗体
/// </summary>
/// <param name="frm">Baseform/Form类型子窗体</param>
public void MdiShow(Baseform frm)
{
foreach (System.Windows.Forms.Form f in this.MdiChildren)
{
if (f.Name == frm.Name)
{
f.Activate();
f.Show();
frm.Dispose();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
return;
}
}
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
frm.MdiParent = this;
frm.KeyPreview = true;
frm.FMain = this;
frm.Show();
frm.initButton();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
}
调用
private void btnsUserManage_Click(object sender, EventArgs e)
{
frmUserManage fL = new frmUserManage();
MdiShow(fL);
}