C# Winfrom MDI(多文档界面)

1、首先设置父级Form1界面,只需要将该界面的IsMdiContainer属性设置为true;

2、设置按钮的事件来打开子级的窗口Form2,Form3等等;

3、在From1内设置一个容器panel,范围为需要打开的子级界面的大小;

4、设置Form2、Form3的事件,以及唯一窗口等;

//Form2的点击事件
        private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Name = "f2";
            openwidow(f2);
        }
//Form3的点击件
        private void form3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 f3 = new Form3();
            f3.Name = "f3";
            openwidow(f3);
        }
//设置唯一窗口:
//新建一个formlist集合,供唯一窗口使用
List<Form> formlist = new List<Form>();
//新建一个public的方法
        private void openwidow(Form f)
        {
//定义一个Form fff变量
            Form fff = null;
//定义一个bool类型的变量为false;
            bool open = false;
//遍历这个集合
            foreach (Form ff in listfrom)
            {
//只要遍历到就隐藏
                ff.Hide();
//如果遍历到f.name
                if (ff.Name == f.Name)
                {
                    open = true;
//把ff放到集合内
                    fff = ff;
                }
            }
//如果遍历到f.name,
            if (open)
            {
//关闭所有窗口
                f.Close();
//重新打开这个串口
                fff.Show();
            }
//否则
            else
            {
//设置打开的窗口为Form1的子窗体;
                f.MdiParent = this;
//设置子窗口的大小为最大化;
                f.WindowState = FormWindowState.Maximized;
//把子窗口放到Form1的panel1里;
                f.Parent = panel1;
//设置无边框
                f.FormBorderStyle = FormBorderStyle.None;
//打开窗口
                f.Show();
//把这个窗口放到集合内
                fromlist.Add(f);
            }

        }
时间: 2024-10-08 16:54:16

C# Winfrom MDI(多文档界面)的相关文章

MDI多文档界面管理

本次目标是建立一个Form主窗体,并在该主窗体中建立菜单,通过菜单打开其余的子窗体. Form1图片: 代码: 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 Sy

设计一个多文档界面(MDI)应用程序,可以实现打开、排列和关闭子窗口。

首先 :我们要知道什么是多文档界面(MDI) 理论上说是"在多文档窗口环境下进行开发设计的,这种多文档界面称为多文档界面(mdi)" 通俗 的一点,我们最常见到的Excel表格就是mdi [我个人理解的图是这样的] 开始实际操作: 1.打开2个窗体[Form2为主窗体,Form2_son为子窗体] 2.在主窗体Form2中拖拉控件 MenuStrip(菜单栏) 设置form2的IsMdiContainer=True 3.在子窗体Form2_son中拖拉控件 RichTextBox  (

【Windows编程】系列第十一篇:多文档界面框架

前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典型的多文档界面,他可以同时编辑多个文档,每个文档还可以最大化,最小化等等,我们今天就来看看多文档的基本框架是怎么实现的. 多文档界面的框架创建需要几下几步. 主框架窗口创建 主框架窗的创建跟普通的窗口没有什么区别,就是自己注册一个类并用该类创建一个重叠窗口,这个可以用CreateWindow/Cre

Qt多文档界面应用设计

使用Qt编写多文档界面(MDI)应用相当方便,主要会使用到QMdiArea和QMdiSubWindow两个类.可以查看Qt Asistant中这两个类的说明文档,里面介绍的相当详细.另外,可以搜索例程"Mdi Example",这是提供的一个示例程序,这是一个多文档编辑器,代码很详细,只是缺少注释,不过很简单,应该容易看懂.接下来,我在这里介绍最简单.最精华的部分. 1 QMdiArea 这个类相当于一个MDI窗口管理器,用来管理添加到这个区域中的多个子窗口.我们在应用中新建的所有子窗

多文档界面的实现(DotNetBar的superTabControl)

private void FormMain_Load(object sender, EventArgs e) { superTabControl2.Tabs.Clear(); timer1.Start(); buttonX1_Click(null, null); } /// <summary> /// 创建或者显示一个多文档界面 /// </summary> /// <param name="caption">窗体标题</param> /

多文档界面QMdiArea

当使用多文档界面功能时,我们是将QMdiArea作为主窗口的中央部件,然后在这个中央部件中,我们可以同时打开很多个子窗口QMdiSubWindow 样式: 1 import sys 2 from PyQt5.QtGui import QIcon 3 from PyQt5.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow, QAction, QTextEdit 4 5 6 class Demo(QMainWind

第19章 多文档界面

19.1 概述——MDI层次结构 ①框架窗口 A.本身是一个普通的主窗口,其客户区被特殊的窗口覆盖,并不直接显示程序的输出.其客户区也被称为“工作区” B.默认的消息处理函数是DefFrameProc,而不是DefWindowProc. ②客户窗口: A.系统预定义的窗口类,类名“MDICLIENT”,负责各个MDI子窗口的管理. B.窗口过程系统己经预先注册,用户程序不需要窗口过程. ③文档窗口:也称为子窗口,用于显示一个文档. 19.2 窗口的建立 (1)框架窗口:先注册一个MDI框架窗口类

Qt:多文档(MDI)文档处理软件思路01

文档处理软件是我们日常生活中最为常用的软件之一.在此以将记事本为例子,实现的基本思路描述. 一:基本外观功能. 1)有菜单栏和按钮,根据不同的实现功能,将按钮添加到菜单中,并且添加工具栏. 2)主窗口显示(在此不同于记事本,为多文本窗口). 在Qt中按钮的显示以QAction来替代,菜单和工具栏为QMenu和QToolBar,部分代码如下:     //in file menu.     QAction* pActionNew;     QAction* pActionOpen;     QAc

DotNetBar创建的Ribbon、标签式多文档界面

1.创建一个form作为主窗体,继承自:DevComponents.DotNetBar.RibbonForm 设置属性:IsMdiContainer为true 2.创建一个form,作为子窗体,也继承自:DevComponents.DotNetBar.RibbonForm,插入一个richtext控件,dock=fill 3.主窗体插入一个DevComponents.DotNetBar.TabStrip,作为控制各个子窗体的标签显示器 设置属性: CloseButtonOnTabsVisible