Mdi是一个窗体容器控件,直接在新建好的窗体里面,将此窗体设置为Mdi容器,开启了Mdi容器的窗体里面,如果有点击事件打开新窗体,则这些新窗体会在此窗体内部的Mdi容器中打开

操作步骤:

1.首先先新建一个窗体,将此窗体的IsMdiContainer改为true,这样,此窗体的Mdi容器就会开启了

2.然后再这个窗体中设置按钮,点击后弹出新窗体,再添加窗体,作为点击后弹出的窗体

3.写一下两个按钮的点击事件

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 MDI窗体
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} //主窗体“销售模块”的点击事件,弹出一个新窗体
private void 销售模块ToolStripMenuItem_Click(object sender, EventArgs e)
{ bool has = false;//定义一个bool类型的变量,默认false,用来判断是否已开启过此窗体
Form2 f2 = new Form2();//实例化Form2窗体
foreach (Form f in this.MdiChildren)//遍历一下所有mdi容器里的From窗体,MdiChildren获取MDI子窗体的数组
{
if (f.Name == f2.Name)//如果所有窗体里面已经有一个和新开窗体名称相同的
{
has = true;//bool变量为true
f.Show();//则打开原窗体
f2.Close();//关闭新开窗体,此写法是为了同一按钮点击多次会重复弹出多个相同窗体
}
}
if (has == true) //如果已经有了和新开窗体同名的窗体并且还有其他窗体开启的情况下
{
foreach (Form f in this.MdiChildren)
{
if (f.Name != f2.Name)//则将窗体中不和新窗体同名的窗体全部隐藏掉
{
f.Hide();
}
}
}
else//如果点击后是一个新的窗体,之前没有开启过
{
f2.WindowState = FormWindowState.Maximized;//f2的窗口状态打开就是最大化,以免漏出Mdi容器底色,影响美观
f2.MdiParent = this;//f2的父窗体为这个MDI容器
f2.Parent = panel1;//在设计界面添加一个panel容器控件,将窗体放在里面,可以设置窗体的最大、小化和关闭按钮隐藏
f2.Show();
}
} private void 仓库模块ToolStripMenuItem_Click(object sender, EventArgs e)
{ bool has1 = false;
Form3 f3 = new Form3();
foreach (Form f in this.MdiChildren)
{
if (f.Name == f3.Name)
{
has1 = true;
f.Show();
f3.Close();
}
}
if (has1 == true)
{
foreach (Form f in this.MdiChildren)
{
if (f.Name != f3.Name)
{
f.Hide();
}
}
}
else
{
f3.WindowState = FormWindowState.Maximized;
f3.MdiParent = this;
f3.Parent = panel1;
f3.Show();
}
}

4.将两个新窗体设置为无边框,使整个界面更加清晰美观

MDI窗体容器的更多相关文章

  1. MDI窗体容器--2016年12月15日

    MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单, ...

  2. Winform MDI窗体容器、权限、简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  3. Winform MDI窗体容器,权限以及简单通讯

    MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体 ...

  4. Winform MDI窗体容器 权限 简单通讯

    MDI窗体容器 权限  using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  5. MDI窗体容器、权限设置

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  6. MDI窗体容器 权限设置

    MDI窗体容器:它可以让其它窗体在它的内部打开,无法超出它的范围将某个窗体的属性:IsMdiContainer设置为true - 窗口样式如何将其它窗体在它的内部打开?窗体对象名.MdiParent ...

  7. winform(MDI窗体容器、权限设置)

    一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...

  8. MDI窗体容器和权限设置.avi

    一.MDI窗体容器 MDi窗体是装Form的容器.平常Form(窗体)就是平常展示的最高级别,但是MDI比Form还高级.它可以让其它窗体在它的内部打开,无法超出它的范围 1 创建:将某个窗体的属性: ...

  9. 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

    一.打印控件 第一步先把打印对象搞出来. - printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...

随机推荐

  1. Python三级菜单增删改查

    #主要知识点是,字典,列表是使用menu = {'北京':{ '朝阳':{ '国贸':{ 'CICC':{}, 'HP':{}, '渣打银行':{}, 'CCTV':{} }, '望京':{ '陌陌' ...

  2. Entity Framework 入门:准备工作

    Entity Framework 6官方文档 准备工作: 数据库:MySQL + (MySQL for Visual Studio  下载地址  + Mysql connector/net 下载地址 ...

  3. Java框架相关

    问题及答案来源自<Java程序员面试笔试宝典>第五章 Java Web 5.3 框架 11.什么是IoC? IoC:控制反转(Inverse of Control, IoC),有时候也被称 ...

  4. Thinkphp时间转换与统计的问题

    1.thinkphp一般存入的都是时间戳,如果希望输入时直接显示格式化的时间呢: a. sql语句: SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUN ...

  5. Linux将某目录授权给某组里的某用户

    chown -Rf 用户名:组名 目录

  6. centos7系统分区方案

    个人认为:硬盘如果够大,可以单独划分一个data盘,以防止rm -rf / Centos 7.2基础安装和配置(含分区方案建议) 参考网站:  https://www.cnblogs.com/set- ...

  7. 水仙花在python3在pycharm的实现

    ---恢复内容开始--- #方法一:#-*- coding: utf-8-*-while True: num = input("请输入一个三位数") num = int(num) ...

  8. 【ASP.NET 插件】Plupload多格式多文件上传实现

    由于工作需求,要实现一个多格式多文件的上传功能,而且需要.NET版本的,嘿嘿,终于还是实现了,网上搜了很久,找到一篇不错的博文:WEB版一次选择多个文件进行批量上传(Plupload)的解决方案,在此 ...

  9. leetcode986

    class Solution: def judgeIntersection(self,a:'Interval',b:'Interval'): #返回值1,bool类型,是否有交集:True-有交集,F ...

  10. <基础> PHP 进阶之 类型转换

    引用官方的解释 PHP 在变量定义中不需要(或不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的.也就是说,如果把一个 string 值赋给变量$var,$var 就成了一个 strin ...