110,533
社区成员
发帖
与我相关
我的任务
分享
#region 不重复打开MDI子窗体
/// <summary>
/// 不重复打开MDI子窗体
/// 调用:this.OpenMDIWindow(typeof(窗体名).ToString());
/// </summary>
/// <param name="ChildTypeString">窗体名称(typeof(FormName).ToString())</param>
private void OpenMDIWindow(string ChildTypeString)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString))
{
// Get current process assembly
Assembly assembly = Assembly.GetExecutingAssembly();
// Create data type using type string
Type typForm = assembly.GetType(ChildTypeString);
// Create object using type's "InvokeMember" method
Object obj = typForm.InvokeMember(
null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance,
null,
null,
null);
// Show child form
if (obj != null)
{
this.Refresh();
//Form frmTip = LoadTip.ShowTipForm(this, "正在加载窗体");
myChild = obj as Form;
myChild.MdiParent = this;
myChild.WindowState = FormWindowState.Maximized;
myChild.Show();
myChild.Focus();
//frmTip.Close();
}
}
}
/// <summary>
/// Search mdi child form by specific type string
/// </summary>
/// <param name="ChildTypeString"></param>
/// <returns></returns>
private bool ContainMDIChild(string ChildTypeString)
{
Form myMDIChild = null;
foreach (Form f in this.MdiChildren)
{
if (f.GetType().ToString() == ChildTypeString)
{
// found it
myMDIChild = f;
break;
}
}
// Show the exist form
if (myMDIChild != null)
{
myMDIChild.TopMost = true;
myMDIChild.Show();
myMDIChild.Focus();
return true;
}
else
{
return false;
}
}
#endregion
this.OpenMDIWindow(typeof(窗体名).ToString());