Form1 objForm1 = new Form1 ();
objForm1 .MdiParent = this;
objForm1 .Show();
这是我打开MDI表单的代码。如果我再次打开此页面,它会一次又一次出现,并打开这么多窗口。有人可以帮忙吗?
答案 0 :(得分:1)
如果您只想在尚未打开的情况下创建新表单,可以执行以下操作:
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字段/属性(IsAlreadyShown)
public static bool IsAlreadyShown { get; set; }
2)在表单
的构造函数中将其设置为truepublic 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();
}
答案 1 :(得分:0)
到目前为止,我从您的问题中了解到,您希望form1成为MDI容器。如果你想要这个,那么只需将属性ISMdiContainer设置为true。现在如果你想将这个表单Form1设置为任何表单的父类,你可以使用你的代码
FormAny objFormAny = new FormAny ();
objFormAny .MdiParent = objForm1; // reference of MDI Container
objFormAny .Show();