LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤

admin
2024年12月12日 8:43 本文热度 81

前言

嗨,各位码农们!今天我们要来聊聊如何在 C# 的 WinForms 应用程序中用 MDI(Multiple Document Interface)模式来优雅地管理多个子窗体。

如果你曾经对着一堆乱七八糟的窗体不知所措,或者想要让你的应用程序看起来更专业一点,那么这篇文章就是为你准备的!

想象一下,当你打开一个应用,所有的子窗体都乖乖地呆在一个主窗口里面,是不是感觉棒极了?好了,废话不多说,让我们开始吧!

Step By Step 步骤

  1. 创建一个 WinForm 类型的项目

  2. 添加三个 Windows 窗体

    • FrmMain.cs(主窗体)
    • FrmTest1.cs(这俩是小弟,也就是子窗体)
    • FrmTest2.cs
  3. 打开 FrmMain 窗体设计器,修改以下属性

    • Text: MDI 主窗体
    • Size: 1000,600
    • StartPosition: CenterScreen
    • IsMdiContainer: True(重要,将窗体设置为 MDI 容器
    • 其它属性默认值即可
  4. 拖拽一个 MenuStrip 控件到 FrmMain 窗体设计器里,并将 MenuStrip 控件改名为 MenuFuns

  5. 在 FrmMain 窗体设计器里输入两个菜单项:

    • 打开窗体1,同时将菜单项改名为 menuOpenWin1
    • 打开窗体2,同时将菜单项改名为 menuOpenWin2
  6. 分别双击这两个菜单项,自动生成菜单项的单击事件,如:

    private void menuOpenWin1_Click(object sender, EventArgs e)
    {
     
    }

    private void menuOpenWin2_Click(object sender, EventArgs e)
    {
     
    }
  7. 在这两个事件里写上打开相应子窗体的代码,最终代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace MRHelper
    {
     public partial class FrmMain : Form
     {
      public FrmMain()
      {
       InitializeComponent();
      }

      private void menuOpenWin1_Click(object sender, EventArgs e)
      {
       var frm = new FrmTest1();   // 实例化子窗体
       frm.MdiParent = this;   // 让子窗体知道它的老大是谁
       frm.MinimizeBox = false// 不要最小化按钮 
       frm.MaximizeBox = false// 也不要最大化按钮
       frm.StartPosition = FormStartPosition.CenterScreen; // 居中显示
       frm.Show();     // 显示子窗体
      }

      private void menuOpenWin2_Click(object sender, EventArgs e)
      {
       var frm = new FrmTest2();
       frm.MdiParent = this;
       frm.MinimizeBox = false;
       frm.MaximizeBox = false;
       frm.StartPosition = FormStartPosition.CenterScreen;
       frm.Show();
      }
     }
    }
  8. 打开 Program.cs 文件,设置启动窗体为 FrmMain 窗体,如:

    Application.Run(new FrmMain());
  9. 至此,一切准备就绪,按 F5 或点击运行按钮,然后点击菜单,就可以看到子窗体一个个乖乖地出现了!

总结

WinForm MDI 模式就像是窗体管理大师,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用,减少了视野中的混乱,在这个统一的界面里,用户就能轻松上手,享受程序带来的便利,各位小窗体还有机会共享主窗体的资源,真是个团宠。

当然,多个子窗体的管理也会带来一些小挑战,像是每个子窗体的生命周期管理,还有子窗体之间需要传递的参数、事件,若管理失当,可能导致代码变得像战场一样乱七八糟,甚至引发内存泄漏的悲剧。

不过,别担心,MDI 模式在适合多文档处理的场景中绝对是一种强大的设计模式。在设计与实现时,只需综合考虑业务流程逻辑,就能避免那些小小的 "安全隐患" 了。


该文章在 2024/12/13 9:31:10 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved