• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#多文档窗体的入门

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
多文档窗体的入门
多文档界面就是所谓的MDI,他是从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,这是因为Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序。在视窗系统3.1版本中,MDI得到了更大范围的应用。其中系统中的程序管理器和文件管理器都是MDI程序。
Visual C#是微软公司推出的下一代主流程序开发语言,他也是一种功能十分强大的程序设计语言,正在受到越来越多的编程人员的喜欢。在Visual C#中,提供了为实现MDI程序设计的很多功能。本文就是通过一个具体的例子来详细的介绍在Visual C#中的MDI编程。 


程序设计的思路、主要步骤和实现方法:

MDI编程主要就是要在主窗体中能够新建一个MDI窗体,并且能够对主窗体中的所有MDI窗体实现层叠、水平平铺和垂直平铺。虽然这些操作比较基本,但却是程序设计中的要点和重点。本文就按照上述功能的顺序来一一介绍。

(1)首先要设定主窗体是一个MDI窗体的容器,因为只有如此才能够在此主窗体上面添加MDI窗体,从而实现对MDI编程,具体实现语句如下:
this.IsMdiContainer = true ;

(2)在主窗体上面新建一个MDI窗体。在程序中,新建一个MDI窗体的命令是通过一个菜单的事件来实现的。在处理新建一个MDI窗体事件中,关键是要设定此MDI窗体的父窗体。其实MDI窗体和别的窗体没有什么不同,不同点就在MDI窗体有上一级窗体,即父窗体,而其他窗体是没有的,具体实现语句如下:
private void New_Click ( object sender , EventArgs e )//这是一个菜单的事件
{
Form frmTemp = new Form ( ) ;
//新建一个窗体
frmTemp.MdiParent = this ;
//定义此窗体的父窗体,从而此窗体成为一个MDI窗体
frmTemp.Text = "窗体0" + FormCount.ToString ( ) ;
//设定MDI窗体的标题
FormCount++ ;
frmTemp.Show ( ) ;
//把此MDI窗体显示出来
}
(3)实现对MDI窗体的层叠:

对于在主窗体中实现对MDI窗体的层叠操作,在主程序中,是通过一个方法来实现的,这个方法就是LayoutMdi,他所带的参数是MdiLayout.Cascade,具体实现语句如下:
private void Cascade_Click ( object sender , EventArgs e )
// 实现对主窗体中的MDI窗体的层叠操作
{
this.LayoutMdi ( MdiLayout.Cascade ) ;
}


(4)实现对MDI窗体的水平平铺:

要在主窗体实现MDI窗体水平平铺,也是通过LayoutMdi方法,此时所带的参数是MdiLayout.TileHorizontal,具体实现语句如下:

private void TileH_Click ( object sender , EventArgs e )
// 实现对主窗体中的MDI窗体的水平平铺操作
{
this.LayoutMdi ( MdiLayout.TileHorizontal ) ;
}


(5)实现对MDI窗体的垂直平铺:

要在主窗体实现MDI窗体垂直平铺,也是通过LayoutMdi方法,此时所带的参数是MdiLayout.TileVertical,具体实现语句如下:

private void TileV_Click ( object sender , EventArgs e )
// 实现对主窗体中的MDI窗体的垂直平铺操作
{
this.LayoutMdi ( MdiLayout.TileVertical ) ;
}


(6)在有些MDI程序,当新建一个MDI窗体以后,往往会在某些菜单项的下面生产一个以此MDI窗体的名称为名称的子菜单项。在其他语言中要实现这种功能,可能就要在某些主菜单项下动态的加入子菜单了。但是在Visual C#中实现此种功能,就显得比较简单的,只有在要加入的主菜单项下加入下面一句程序就可以了:
WindowMenu.MdiList = true ; 本程序中,是在"窗口"主菜单项下面加入MDI窗体的子菜单项的。
程序源代码(frmParent.cs)
通过对程序设计中的难点介绍以后,就可以比较容易得到实现对上述MDI窗体处理的源程序代码(mdi.cs),具体如下:

frmParent.cs源程序代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace mdi
{
    public partial class frmParent : Form
    {
        public int formCount=0;
        public frmParent()
        {
            InitializeComponent();
        }
        private void frmParent_Load(object sender, EventArgs e)
        {
          
        }
       
        private void 打开子窗体1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
           Children1 childer1= new Children1();
            childer1.MdiParent = this;
            formCount++;
            childer1.Text = "窗体" + formCount.ToString();
            childer1.Show();
        }
        private void Cascade_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.Cascade);
        }
        private void TileHorizontal_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.TileHorizontal);
        }
        private void TileV_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.TileVertical);
        }
    }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中is与as的区别分析发布时间:2022-07-18
下一篇:
C#Dictionary是否包含key发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap