我學習MDI窗體中的窗口形式,我用這個簡單的應用玩: 有沒有辦法縮短這段代碼? C#的WinForms
每個ToolStripMeniItem
調用特定形式的單個實例,但你可以看到(請參閱我的代碼)我的代碼對於每個ToolStripMeniItem都是重複的,我怎麼縮短這個?
public static Form IsFormAlreadyOpen(Type FormType)
{
foreach (Form OpenForm in Application.OpenForms)
{
if (OpenForm.GetType() == FormType)
return OpenForm;
}
return null;
}
private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form1 f1 = null;
if (IsFormAlreadyOpen(typeof(Form1)) == null)
{
f1 = new Form1();
f1.MdiParent = this;
f1.Show();
}
else
{
Form selectedForm = IsFormAlreadyOpen(typeof(Form1));
foreach (Form OpenForm in this.MdiChildren)
{
if (OpenForm == selectedForm)
{
if (selectedForm.WindowState == FormWindowState.Minimized)
{
selectedForm.WindowState = FormWindowState.Normal;
}
selectedForm.Select();
}
}
}
}
private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = null;
if (IsFormAlreadyOpen(typeof(Form2)) == null)
{
f2 = new Form2();
f2.MdiParent = this;
f2.Show();
}
else
{
Form selectedForm = IsFormAlreadyOpen(typeof(Form2));
foreach (Form OpenForm in this.MdiChildren)
{
if (OpenForm == selectedForm)
{
if (selectedForm.WindowState == FormWindowState.Minimized)
{
selectedForm.WindowState = FormWindowState.Normal;
}
selectedForm.Select();
}
}
}
// and so on... for the other ToolStripMeniItem
}
@Preet〜聰明 – jcolebrand 2010-09-27 00:34:10
我認爲這是一個有點太先進,顯然OP正在瞭解的WinForms ...這似乎有點矯枉過正... – t0mm13b 2010-09-27 00:34:29
我無法理解mr.Preet僧團的代碼。 ( – yonan2236 2010-09-27 00:35:37