到目前为止,作为一名 .net 开发人员,我大量使用 mdi 表单来显示特定的“菜单点”,例如“模块 1”“模块 2”等。
我一直在这样做:
- 创建一个将“isMdiContainer”设置为“true”的父表单
- 在 mdi 容器中创建一个菜单条
- 创建一个实现单例的子表单,以便表单只显示一次
- 将类似以下代码的内容添加到 mdi 容器中:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Myapp
{
public partial class MdiContainer : Form
{
private module1 Module1Window;
private module2 Module2Window;
private module3 Module3Window;
public FormContainer()
{
InitializeComponent();
this.Module1Window = modul1.getInstance();
this.Module1Window.MdiParent = this;
this.Module2Window = modul2.getInstance();
this.Module2Window.MdiParent = this;
this.Module3Window = modul3.getInstance();
this.Module3Window.MdiParent = this;
this.Module1Window.Show();
}
private void module1ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Module3Window.Hide();
this.Module2Window.Hide();
this.Module1Window.Show();
}
private void module2ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Module1Window.Hide();
this.Module3Window.Hide();
this.Module2Window.Show();
}
private void module3ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Module1Window.Hide();
this.Module2Window.Hide();
this.Module3Window.Show();
}
}
}
现在,这显然工作正常。但是维护起来很痛苦。每次我想添加另一个子表单时,我必须:
- 实现单例
- 在mdi容器中创建对应的属性
- 获取实例并设置 mdi 父级
- 单击其他按钮时隐藏新表单
- 单击相应按钮时显示表单并隐藏所有其他表单
有什么更优雅的方法,或者说更有效的方法来归档它?