我学习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