前言
在做winfrom项目的时候我们可能会用到嵌套窗体,就是说一个容器中有多个窗体,可以分别管理和应用这些窗体,.net中提供了一种机制就是MDI,可能大家都会用,这边就简单的介绍下。
简单应用
winfrom中怎么用MDI呢,其实只要设置窗体的一个属性就可以了:
IsMdiContainer属性设置为true就表示该窗体为MDI窗体,很简单,那我们可以在窗体加载的时候这些写:
1 private void Form1_Load(object sender, EventArgs e) 2 { 3 Form childForm1 = new Form(); 4 childForm1.Text = "窗口1"; 5 childForm1.MdiParent = this; 6 childForm1.Show(); 7 8 Form childForm2 = new Form(); 9 childForm2.Text = "窗口2"; 10 childForm2.MdiParent = this; 11 childForm2.Show(); 12 }
childForm1.MdiParent = this;这句代码的意思就是设置子窗体的MDI父窗体为本窗体,看下运行效果:
基本方法
关于MDI相关的方法主要是窗体的布局方法LayoutMdi(),参数是MdiLayout枚举:
成员名称 | 说明 | |
---|---|---|
ArrangeIcons | 所有 MDI 子图标均排列在 MDI 父窗体的工作区内。 | |
Cascade | 所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内。 | |
TileHorizontal | 所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内。 | |
TileVertical | 所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内。 |
LayoutMdi(MdiLayout.Cascade);效果:
LayoutMdi(MdiLayout.TileHorizontal);效果:
仿Notepad小程序
我们在办公的时候可能都用过Notepad++,很方便,其实Notepad++里面的窗体就有点MDI的感觉:
我们也可以利用MDI做出类似的感效果,Notepad++是文本编辑器,里面每个窗体其实就是单独的Notepad,首先我们需要先建一个文件编辑器的窗体,其实就是一个RichTextBox控件,因为RichTextBox控件是富文本编辑器,所以我们可以进行字体和颜色的调整,调整字体和颜色用的是winfrom的组件,关于文本编辑器就不详述了,贴下代码:
文件编辑器做好了,下面就是主窗体,首先IsMdiContainer属性设置为true,在上面我们加下菜单:
新建Notepad的代码:
1 private void tsmiNewTxt_Click(object sender, EventArgs e) 2 { 3 NotepadForm childForm = new NotepadForm(); 4 childForm.Text = "新建文本文档.txt"; 5 childForm.MdiParent = this; 6 childForm.Show(); 7 }
运行效果:
本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/3547577.html,如需转载请自行联系原作者