• C#应用程序界面开发基础——窗体控制(2)——MDI窗体


    MDI窗体

    单文档界面(SDI)

    多文档界面(MDI)

    MDI窗体的概念

    MDI窗体(Multiple-Document Interface,多文档界面)用于同时显示多个文档。

    在项目中使用MDI窗体时,通常将一个MDI窗口窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。

    设置MDI窗体

    1、MDI容器窗体

    将某个窗体设置为窗口窗体,有两种方法:

    1、在窗体的“属性”面板中,将IsMidContainer属性设置为True即可。

    False:

     True:

    2、在窗体的Load事件中加入以下语句

    代码如下:

    1. using System.ComponentModel;
    2. using System.Data;
    3. using System.Drawing;
    4. using System.Linq;
    5. using System.Text;
    6. using System.Threading.Tasks;
    7. using System.Windows.Forms;
    8. namespace WindowsFormsApp1
    9. {
    10. public partial class Form1 : Form
    11. {
    12. public Form1()
    13. {
    14. InitializeComponent();
    15. }
    16. private void Form1_Load(object sender, EventArgs e)
    17. {
    18. this.IsMdiContainer = true;
    19. }
    20. }
    21. }

    2、设置MDI子窗体

    MDI子窗体就是一般的窗体。只需要将某个窗体实例的MdiParent属性设置到一个MDI父窗体,它就是那位父窗体的子窗体,语法格式如下:

    窗体实例名.MdiParent=父窗体对象;

      设置MDI容器:

    修改后:

    从Form5属性里,通过Name属性来进行修改为“MainForm”

    修改后:

    Text属性表示窗体标题,修改为“MDI窗体”

    修改后: 

     

     新建子窗体(Form1.cs、Form2.cs、Form3.cs、Form4.cs): 

    代码内容:

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Threading.Tasks;
    9. using System.Windows.Forms;
    10. namespace Form5
    11. {
    12. public partial class MainForm : Form
    13. {
    14. public MainForm()
    15. {
    16. InitializeComponent();
    17. }
    18. private void MainForm_Load(object sender, EventArgs e)
    19. {
    20. Form1 form1 = new Form1();
    21. form1.Show();
    22. form1.MdiParent = this;
    23. Form2 form2 = new Form2();
    24. form2.Show();
    25. form2.MdiParent = this;
    26. Form3 form3 = new Form3();
    27. form3.Show();
    28. form3.MdiParent = this;
    29. Form4 form4 = new Form4();
    30. form4.Show();
    31. form4.MdiParent = this;
    32. }
    33. }
    34. }

    完成后:

    运行结果如下:

    排列MDI窗体

    语法格式如下:

    public void LayoutMdi(MdiLayout value)

    value是MdiLayout的枚举值之一,用来定义MDI子窗体的布局。

    MdiLayout的枚举成员
    枚举成员说明
    Cascade层叠排列MDI子窗体
    TileHorizontal水平平铺MDI子窗体
    TileVertical垂直平铺MDI子窗体

    新建一个Windows窗体应用程序,在Name属性中将窗体唯一标识符命名为MainForm,并且在Text属性中,将主窗体的标题命名为“MDI窗体”。

    在菜单栏中选择“视图”命令 ,再选择“工具箱”命令,就会弹出工具箱。

    在工具箱中选择MenuStrip控件,此时就会在窗体中出现一排菜单栏,并依次输入“新建窗体”、“层叠排列”、“水平平铺”、“垂直平铺”、“关闭”。

    接着,再将IsMdiContainer属性设置为True。

    再创建一个子窗体,并命名为“ChildForm”,下面就可以通过双击菜单项,进行添加事件。 

    代码如下:

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Threading.Tasks;
    9. using System.Windows.Forms;
    10. namespace Form5
    11. {
    12. public partial class MainForm : Form
    13. {
    14. public MainForm()
    15. {
    16. InitializeComponent();
    17. }
    18. private void MainForm_Load(object sender, EventArgs e)
    19. {
    20. Form1 form1 = new Form1();
    21. form1.Show();
    22. form1.MdiParent = this;
    23. Form2 form2 = new Form2();
    24. form2.Show();
    25. form2.MdiParent = this;
    26. Form3 form3 = new Form3();
    27. form3.Show();
    28. form3.MdiParent = this;
    29. Form4 form4 = new Form4();
    30. form4.Show();
    31. form4.MdiParent = this;
    32. }
    33. private void 新建窗体ToolStripMenuItem_Click(object sender, EventArgs e)
    34. {
    35. ChildForm mychildForm=new ChildForm();
    36. mychildForm.Show();
    37. mychildForm.MdiParent = this;
    38. }
    39. private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e)
    40. {
    41. LayoutMdi(MdiLayout.Cascade);
    42. }
    43. private void 水平平铺ToolStripMenuItem_Click(object sender, EventArgs e)
    44. {
    45. LayoutMdi(MdiLayout.TileHorizontal);
    46. }
    47. private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e)
    48. {
    49. LayoutMdi(MdiLayout.TileVertical);
    50. }
    51. private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
    52. {
    53. Close();
    54. }
    55. }
    56. }

    运行结果如下:

    点击新建窗体:

    层叠排列:

    水平平铺:

    垂直平铺: 

  • 相关阅读:
    第16章 Zookeeper
    简单易懂,高效实用的接口文档编写技巧
    (附源码)php投票系统 毕业设计 121500
    国际版阿里云/腾讯云免费开户:什么是DDos攻击?
    学习JavaScript基础
    基于SpringBoot的健身房管理系统
    选择商品属性弹框从底部弹出动画效果
    【探索AI】二十四 深度学习之第7周:深度学习在实际应用中的案例
    golang常用库之-go-figure
    从0基础到车载测试工程师,薪资11K,肯拼搏的人,总会有所收获
  • 原文地址:https://blog.csdn.net/DXB2021/article/details/125558628