MDI窗体应用程序

  1. MDI父窗体创建:

    将父窗体属性IsMDIContainer设置为true。值得注意的是并不是所有窗体都可以将该属性设置为true,只有顶级窗体容器才可作为MDI父窗体。

    还有一点需要注意的是MDi父窗体边缘采用系统颜色,而不是用户设置的BackColor。

    另外还要注意的是一定要将主窗体的行为属性MainMenuStrip设置为你想要的值,系统默认第一个toolstripmenu当做该值,如果你准备采用第二个memubar作为该值,一定要明示,否则后果就是MDI子窗体最大化的时候,

  1. MDI子窗体的创建:

    自己创建一个窗体,自己指定他的MDI父窗体既可以。这样就成为多文档界面了。

    这个没有什么技术难度。

    难的是如何将窗体设置成透明的,这一点在界面美观上面很重要。

    在vs08里面,只需要选中菜单项,然后在MDiWindoeListItem选择对应的窗体,在这里可以将那些窗体设置成透明的。

    还有就是通过代码操作可以将MDI子窗体固定到一些container当中,如panel。这个只需要设定他的ParentID既可以。

  2. 确定活动MDI子窗体:

    ActiveMDIChild 属性可以获得具有焦点的子窗体或者最近活动的子窗体。

  3. 将数据发送到活动的MDI子窗口。

    镜像

  4. 排列MDI子窗口:

    MdiLayout枚举类型中几种属性设置。

    this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade);表示层叠

  5. MDI子窗体的行为控制,如打开的时候在主窗体的状态栏生成图标,图标绑定click事件。窗体关闭的时候图标会自动消失这种最基本的需求。其实也就是如何在子窗体中操作父窗体的问题,尤其当操作内容繁多的时候。这个时候.net的事件响应方法模型对于我们很有启发意义,在事件委托中_Click(object sender, System.EventArgs e)直接引用了事件发出者以及触发的事件,这样在事件的处理实现体中可以轻易操作或者访问所需要的属性以及方法。我们这里也一样,在MDI子窗体创建的时候,可以在其中保留主窗体的一个镜像,这样可以通过访问主窗体的一些属性方法来实现我们所需要的结果,而避免了窗体之间复杂的通信机制。本人最讨厌的就是不同类之间的通信,尤其讨厌的是不同程序集之间的访问操作,封装性以及性能在这里遇到交锋,让人很多时候不得不考虑很久。

MDI子窗体应用技巧:

MDI子窗体+pictruebox可以实现一些listview的功能,而且效果更好控制,界面也更好美化。此处需要注意的是此处的MDI子窗体必须指定parent容器,并且要将formstyle设定成none。不过效果还是蛮满意的。这样做的优点就是开发难度降低,缺点就是类增多。

MDI窗体应用程序

时间: 2024-08-03 16:18:46

MDI窗体应用程序的相关文章

.Net学习 第3季02 winform应用程序 MDI窗体设计 menuStrip

窗体2.3.4...只落在窗体1(父窗体)的范围内并且可以全部显示的设计---MDI窗体设计 在窗体1中创建menuStrip类的对象(菜单栏),设置其中一个的点击事件为显示窗体2.3.4 private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); Form3 f3 = new Form3(); f3.Show(); Form4 f4 = ne

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

一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内部打开? 窗体对象名.MdiParent = this; (2)窗体打开时最大化属性不好用,怎么办? 在实例化窗体对象,show之前,用代码设置最大化属性 注意:窗体的WindowState属性必须为默认值Normal (3)内部窗体最大时右上角总是显示最大最小关闭按钮,如何去掉? 在MDI窗体里放

使用MDI窗体实现多窗口效果

本文章已收录于: C#MDI窗体实现多窗口效果   Visual C#是微软公司推出的下一代主流程序开发语言,他也是一种功能十分强大的程 序设计语言,正在受到越来越多的编程人员的喜欢.在Visual C#中,提供了为实现MDI程序设计的很多功能.本文就是通过一个具体的例子来详细的介绍在Visual C#中的MDI编程.    一程序设计及运行的环境: (1)视窗2000服务器版 (2).Net FrameWork SDK Beta 2版 二程序设计的思路.主要步骤和实现方法: MDI编程主要就是

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

MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单,用于在窗口或文档之间进行切换. (1)首先要设定主窗体是一个MDI窗体的容器,因为只有如此才能够在此主窗体上面添加MDI窗体,从而实现对MDI编程,具体实现语句如下: 1 this.IsMdiContainer = true ; (2)在主窗体上面新建一个MDI窗体.在程序中,新建一个MDI窗体的命

机房重构---MDI窗体+单例模式

在VB6.0版本的机房收费系统中就用到了MDI技术(多文档界面),其中有的窗体用了MDI,而有的则没有用到,回头想想这些个关于增删改查的功能都该是MDI这个容器中的子窗体,于是这次我将他们都放到了MDI窗体中. 一.关于MDI窗体 MDI窗体设置步骤: (1)在frmMain中打开属性窗格,"IsMdiContainer"属性设置为"True". (2)把工具箱中MenuStrip控件拖到frmMain中,创建菜单如图 由于最近敲的是"修改密码"

C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序 2.效果图: 如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体. 横向排列下面的窗体: 纵向排列下面的窗体: 关闭全部子窗

【C#】MDI窗体中,将子窗体置于父窗体控件之上的方法

问题 解决办法 user32dll SystemRuntimeInteropServices 代码 总结 问题 这几天在优化程序的时候发现了一个问题,就是在MDI窗体中的子窗体被激活显示出来之后,总是被主窗体中的控件遮挡(各种控件).解决的方法也试了很多但是都不是很满意,由于C#的WINFROM窗体没有SETPARENT的方法,所以很多东西都需要自己去编写,下面就贴一个至少让我感觉非常不错的方法吧. 解决办法 user32.dll user32.dll是Windows用户界面相关应用程序接口,用

C#解决MDI窗体闪屏的方法

最近从师兄手上接了一个C#的项目,需要用到MDI窗体,可是每当我显示子窗体的时候会有一次“闪烁”,很明显,看起来非常不爽,查找许久,知道是每次在show()子窗体的时候都会调用子窗体构造函数重绘窗体,其中需要将子窗体的尺寸调整到我在程序中设置的大小,无论我这样设置,这个窗口大小变化总会在show()的时候显示出来,我试过网上说的设置双缓冲.先隐藏窗体等启动之后再显示.借助定时器设置窗体的opacity属性,可是问题依旧,没有任何变化,一个偶然的机会找到了微软的MSDN论坛,发现遇到这个问题的哥们

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

MDI窗体容器: 一般来说,窗体是顶级容器,不允许放在其他任何容器内,但是如果将某个窗体的IsMdiContainer属性设置为True,那此窗体就会成为窗体容器,可以在其中放入其他窗体 在内部的窗体不管怎么调整,是无法跳出其父级窗体容器的 注:如果想让内部窗体一直最大化并且不要其显示最大化最小化按钮,可将其FormBorderStyle设置为None,Win7系统另外需要将此窗体放入一个Panel容器中 private void 销售ToolStripMenuItem_Click(object