MDI父窗体
MDI Parent form
Form1 objForm1 = new Form1 ();
objForm1 .MdiParent = this;
objForm1 .Show();
这是我打开 MDI 窗体的代码。如果我再次打开此页面,它会一次又一次地出现,并且会打开很多 windows。有人可以帮忙吗?
如果您只想创建一个尚未打开的新表单,您可以这样做:
ShowFormIfNotOpen(this,typeof(Form1));
public static void ShowFormIfNotOpen(Form mainform,Type type)
{
foreach (Form item in mainform.MdiChildren)
if (item.GetType() == type)
{
item.Activate();
return;
}
Form form = Activator.CreateInstance(type) as Form;
form.MdiParent = mainform;
form.Show();
}
更新
1) 在您的表单中添加一个 public static bool field/property (IsAlreadyShown)
public static bool IsAlreadyShown { get; set; }
2)在窗体的构造函数中设置为true
public Form1()
{
InitializeComponent();
IsAlreadyShown = true;
}
3)调用 ShowForm1(this);
public static void ShowForm1(Form parentForm)
{
if(Form1.IsAlreadyShown ==true)
return;
Form1 objForm1 = new Form1 ();
objForm1 .MdiParent = parentForm;
objForm1 .Show();
}
到目前为止,我从你的问题中了解到,你希望 form1 成为 MDI 容器。如果你想要这个,那么只需将 属性 ISMdiContainer 设置为 true.Now 如果你希望将此表单 Form1 设置为任何表单的父级,你可以使用你的代码
FormAny objFormAny = new FormAny ();
objFormAny .MdiParent = objForm1; // reference of MDI Container
objFormAny .Show();
Form1 objForm1 = new Form1 ();
objForm1 .MdiParent = this;
objForm1 .Show();
这是我打开 MDI 窗体的代码。如果我再次打开此页面,它会一次又一次地出现,并且会打开很多 windows。有人可以帮忙吗?
如果您只想创建一个尚未打开的新表单,您可以这样做:
ShowFormIfNotOpen(this,typeof(Form1));
public static void ShowFormIfNotOpen(Form mainform,Type type)
{
foreach (Form item in mainform.MdiChildren)
if (item.GetType() == type)
{
item.Activate();
return;
}
Form form = Activator.CreateInstance(type) as Form;
form.MdiParent = mainform;
form.Show();
}
更新
1) 在您的表单中添加一个 public static bool field/property (IsAlreadyShown)
public static bool IsAlreadyShown { get; set; }
2)在窗体的构造函数中设置为true
public Form1()
{
InitializeComponent();
IsAlreadyShown = true;
}
3)调用 ShowForm1(this);
public static void ShowForm1(Form parentForm)
{
if(Form1.IsAlreadyShown ==true)
return;
Form1 objForm1 = new Form1 ();
objForm1 .MdiParent = parentForm;
objForm1 .Show();
}
到目前为止,我从你的问题中了解到,你希望 form1 成为 MDI 容器。如果你想要这个,那么只需将 属性 ISMdiContainer 设置为 true.Now 如果你希望将此表单 Form1 设置为任何表单的父级,你可以使用你的代码
FormAny objFormAny = new FormAny ();
objFormAny .MdiParent = objForm1; // reference of MDI Container
objFormAny .Show();