
ZJWCHC 第十章 201776 WinForm高级编程
ZJWCHC WinForm高级编程 第十章

目标 ◆了解MDI应用程序和SDI应用程序 ◆了解菜单和掌握菜单控件的使用 ◆掌握ImageList控件 ◆掌握ToolBar控件和StatusBar控件 ◆ 掌握Timer控件 ◆掌握TreeView控件 ◆掌握ListView控件 ◆了解用于打印的各种类 ◆了解WinForms中的打印过程 2
2 目标 了解 MDI 应用程序和 SDI 应用程序 了解菜单和掌握菜单控件的使用 掌握 ImageList 控件 掌握 ToolBar 控件和 StatusBar 控件 掌握Timer 控件 掌握 TreeView 控件 掌握 ListView 控件 了解用于打印的各种类 了解WinForms 中的打印过程

单文档和多文档2-1 未定标题-记事本 ▣x 文件E编辑E) 格式o) 帮助( 这韩测的-试 打开0). 保存(⑤ Ctrl+S 另存凸) 如已有一个文本文件打 页面设置心. 打印e. Ctrl+P 新建一个记事本实例来 退出(凶 记事本 打开第二个文本文件 未定标题文件的文字已经改变。 二个文本文件 想保存文件吗? 是酒 否 取消 在SD应用程序中一次只能打开一个文件 3
3 单文档和多文档 2-1 这是 Ann 的一个测试 如已有一个文本文件打 开,在同一记事本应用 程序中,不允许创建第 二个文本文件 新建一个记事本实例来 打开第二个文本文件 在SDI应用程序中一次只能打开一个文件

单文档和多文档2-2 E ☒Microsoft Excel x 文件)编辑E) 视图) 插入红)格式0)工具) 数据如) 窗口) 帮助) 应用程序窗口 ☐含日殿昌6秒品电色, 德Σ,斗↓04码100% A1 ☒Book1 =回x B D E 2 3 在MDI应用程序中可以同时打开多个文件 9 5 6 7 8 文档窗口 9 Sheet1/Sheet2/Sheet3 就绪 数宇 4
4 同时打开多个文件 单文档和多文档 2-2 应用程序窗口 文档窗口 在 MDI 应用程序中可以同时打开多个文件 应用程序窗口 文档窗口

主窗体和子窗体3-1 Microsoft Excel-Book1 父窗体 a▣x 回文件 编辑您)视图) 插入) 格式0) 工具红) 数据①)窗口W) 帮助L 日× D它日國昌秒名自图,,,Σ,!↓如g10% A1 A B C F 子窗体 1 2 3 子窗体的菜单并入父窗体中 4 5 6 7 8 9 10 11 12 13 4 Sheet1/Sheet2/Sheet3, 就绪 数字 5
5 主窗体和子窗体 3-1 父窗体 子窗体 子窗体的菜单并入父窗体中

主窗体和子窗体3-2 主窗体的特点: 魔启动一个MD引应用程序时,首先显示父窗体 疃它是应用程序中所有其他窗口的容器 每个应用程序界面都只能有一个MDI父窗体 疃在任何指定的时间都可以打开多个子窗体 任何MDI子窗体都不能移出MDI框架区域 疃关闭MDI父窗体则自动关闭所有打开的MDI子窗体 6
6 主窗体和子窗体 3-2 主窗体的特点: 启动一个 MDI 应用程序时,首先显示父窗体 它是应用程序中所有其他窗口的容器 每个应用程序界面都只能有一个 MDI 父窗体 在任何指定的时间都可以打开多个子窗体 任何 MDI 子窗体都不能移出 MDI 框架区域 关闭 MDI 父窗体则自动关闭所有打开的 MDI 子窗体

主窗体和子窗体3-3 MDI应用程序的属性、方法和事件 事件 说明 Mdic电ibr }壹森界惠头窗俸兽窗件 用 爱生该事件 Mdiesn随 用跳绒属前轰连舞麻(MDI)父窗体 在MDI应用程序中激活或关闭多文档界面 AuicRileftidate 用斑当前透种的多脑横瑗重MDI)子窗州 方法 说明 如果窗体为MDI父窗体,则在触发MDl父窗体的Closing事件之前,将触发所 有MDI子窗体的Closing事件。另外,在触发MDl父窗体的Closed事件之前, 将触发所有MDI子窗体的Closed事件 7
7 主窗体和子窗体 3-3 属性 说明 MdiChildren 用于获取表示多文档界面 (MDI) 子窗体的窗体 数组 MdiParent 用于获取或设置当前多文档界面 (MDI) 父窗体 ActiveMdiChild 用于获取当前活动的多文档界面 (MDI) 子窗体 方法 说明 ActivateMdiChild 用于激活子窗体 LayoutMdi 排列 MDI 父窗体中的多文档界面 (MDI) 子窗 体 事件 说明 Closed 由用户或窗体的 Close 方法关闭窗体后, 发生该事件 Closing 正在关闭窗体时,发生该事件 MdiChildActivate 在 MDI 应用程序中激活或关闭多文档界面 (MDI) 子窗体时,触发该事件 MDI 应用程序的属性、方法和事件 如果窗体为 MDI 父窗体,则在触发 MDI 父窗体的 Closing 事件之前,将触发所 有 MDI 子窗体的 Closing 事件。另外,在触发 MDI 父窗体的 Closed 事件之前, 将触发所有 MDI 子窗体的 Closed 事件

创建MDI窗体 创建MDI窗体步骤: ▣将IsMdiContainer属性设置为True 口选择“项目” Closing事件的 WS窗体” 调用顺序: 口添加给定的代阿,付esrU设置为子窗体 TestForm obichildo ob MDI子窗体 t=this; MDI父窗体 objcnna.Snow(; 8
8 创建 MDI 窗体 TestForm objChild = new TestForm(); objChild.MdiParent = this; objChild.Show(); 创建 MDI 窗体步骤: ❑ 将 IsMdiContainer 属性设置为 True ❑ 选择“项目”→“添加 Windows 窗体” ❑ 添加给定的代码,将 TestForm 设置为子窗体 MDI 父窗体 Closing 事件的 调用顺序: MDI 子窗体

激活和去激活窗口 显示活动窗口 活动窗口 )格式)工具) 数据) 窗口W)]帮助) Adobe PUr 0它日國马飞秽陷· 黑Σ·↓如回 重排窗口). 》 隐藏 this.ActivateMdiChild(frmChild); 取消隐藏D. 。▣x B C D E 冻结窗格⑧) H 1第二个窗体 1 Book2 2 2 Bookl ¥ 显示活动窗口的名称 Bookl MessageBox.Show(Convert.ToString(this.ActiveMdiChild)); 2 3 4 Sheet1/Sheet2Sheet3/ 就绪 数字 9
9 激活和去激活窗口 显示活动窗口 this.ActivateMdiChild(frmChild); 激活窗口 MessageBox.Show(Convert.ToString(this.ActiveMdiChild)); 显示活动窗口的名称 活动窗口

排列子窗口 MDILayout枚举的成员 重排奋口 x ☒Mi 回x 排方式 文件)编辑)视图妙 插入)格式@) 工具①)数据①)窗口①)帮助i)Adobe PDF 成员名称 说明 在MDI父窗体的客户端区内排列所有MDI子窗体的 ArrangeIcons 图标 Cascade 在MDI父窗体的客户端区内层叠所有MDI子窗口 TileHorizontal 在MDI父窗体的客户端区内水平平铺所有MDI子窗 口 TileVertical 在MDI父窗体的客户端区内垂直平铺所有MDI子窗 口 10 Sheet1/Sheet2/Sheet3/ 就绪 数宇 10
10 排列子窗口 MDILayout 枚举的成员 成员名称 说明 ArrangeIcons 在 MDI 父窗体的客户端区内排列所有 MDI 子窗体的 图标 Cascade 在 MDI 父窗体的客户端区内层叠所有 MDI 子窗口 TileHorizontal 在 MDI 父窗体的客户端区内水平平铺所有 MDI 子窗 口 TileVertical 在 MDI 父窗体的客户端区内垂直平铺所有 MDI 子窗 口