C#2008与.NET 3.5 高级程序设计读书笔记(27)-- WindowsForms编程
2010-08-24 14:52
197 查看
1.Windows Forms命名空间
最重要的命名空间是System.Windows.Forms,从一个较高的层次来讲,在System.Windows.Forms里的数百个类型可以按下面主要的类型分组。
(1)核心架构。这些类型展现了Windows Forms程序(Form、Application等)的核心操作,还有帮助与传统的ActiveX控件实现互操作性的许多类型。
(2)控件。这些类型用来建立丰富的用户界面(Button、MenuStrip、ProgressBar、DataGridView等),所有这些用户界面都派生自Control基类。控件是在设计时可配置的并且(默认条件下)在运行时是可见的。
(3)组件。这些类型不派生自Control基类,但仍然为Windows Forms程序(ToolTip、ErrorProvider等)提供可视特性。许多组件(比如Timer和BackgroundWorker)在运行时是不可见的,但在设计时可以被可视化配置。
(4)公共对话框。Windows Forms为公共操作(OpenFileDialog、PrintDialog、ColorDialog等)提供许多对话框。如果标准对话框不适合需求,你当然可以构建自定义的对话框。
![](http://pic002.cnblogs.com/img/engine1984/201008/2010082414512990.jpg)
2.剖析Form
继承层次
![](http://pic002.cnblogs.com/img/engine1984/201008/2010082717071582.jpg)
下表概括了Form继承链中每个父类的作用
![](http://pic002.cnblogs.com/img/engine1984/201008/2010082717084821.jpg)
Form类型的生命周期循环:
一旦对象被分配托管堆,框架就会触发Load事件。在Load事件处理程序内,可以自由配置窗体外观,准备任意容纳的子控件(比如ListBoxe、TreeView和其他东西),或在窗口操作期间仅仅分配所用的资源(数据库连接、远程对象代理及其他)。
Load事件触发后,下一个被触发事件就是Activated。当窗体接收到焦点作为桌面上的活动窗体时,该事件就被触发。与Activated事件逻辑上配对的是(当然是)Deactivate,它在窗体失去焦点时触发。由于用户在多个活动的应用程序之间导航,Activated和Deactivate事件在整个窗体类型生命周期中可以被触发多次。 972
当用户选择关闭窗体时,两个和关闭相关的事件会被触发:Closing和Closed。Closing事件首先被触发,可以用来放置提示最终用户的“你确认要关闭该应用程序吗?” 这个让人讨厌的信息(但很有用)。这个确认步骤是很有用的,它确保用户在结束程序前有机会保存应用程序相关的数据。
Closing事件和在System.ComponentModel命名空间里定义的CancelEventHandler委托结合工作,如果设置CancelEventArgs.Cancel属性为true,可以阻止窗体被破坏,并指示它返回正常运行状态。如果设置CancelEventArgs.Cancel属性为false,Close事件触发并结束Windows。Forms应用程序,它将从应用程序域中被卸载,并在进程中结束。
最重要的命名空间是System.Windows.Forms,从一个较高的层次来讲,在System.Windows.Forms里的数百个类型可以按下面主要的类型分组。
(1)核心架构。这些类型展现了Windows Forms程序(Form、Application等)的核心操作,还有帮助与传统的ActiveX控件实现互操作性的许多类型。
(2)控件。这些类型用来建立丰富的用户界面(Button、MenuStrip、ProgressBar、DataGridView等),所有这些用户界面都派生自Control基类。控件是在设计时可配置的并且(默认条件下)在运行时是可见的。
(3)组件。这些类型不派生自Control基类,但仍然为Windows Forms程序(ToolTip、ErrorProvider等)提供可视特性。许多组件(比如Timer和BackgroundWorker)在运行时是不可见的,但在设计时可以被可视化配置。
(4)公共对话框。Windows Forms为公共操作(OpenFileDialog、PrintDialog、ColorDialog等)提供许多对话框。如果标准对话框不适合需求,你当然可以构建自定义的对话框。
![](http://pic002.cnblogs.com/img/engine1984/201008/2010082414512990.jpg)
2.剖析Form
继承层次
![](http://pic002.cnblogs.com/img/engine1984/201008/2010082717071582.jpg)
下表概括了Form继承链中每个父类的作用
![](http://pic002.cnblogs.com/img/engine1984/201008/2010082717084821.jpg)
Form类型的生命周期循环:
一旦对象被分配托管堆,框架就会触发Load事件。在Load事件处理程序内,可以自由配置窗体外观,准备任意容纳的子控件(比如ListBoxe、TreeView和其他东西),或在窗口操作期间仅仅分配所用的资源(数据库连接、远程对象代理及其他)。
Load事件触发后,下一个被触发事件就是Activated。当窗体接收到焦点作为桌面上的活动窗体时,该事件就被触发。与Activated事件逻辑上配对的是(当然是)Deactivate,它在窗体失去焦点时触发。由于用户在多个活动的应用程序之间导航,Activated和Deactivate事件在整个窗体类型生命周期中可以被触发多次。 972
当用户选择关闭窗体时,两个和关闭相关的事件会被触发:Closing和Closed。Closing事件首先被触发,可以用来放置提示最终用户的“你确认要关闭该应用程序吗?” 这个让人讨厌的信息(但很有用)。这个确认步骤是很有用的,它确保用户在结束程序前有机会保存应用程序相关的数据。
Closing事件和在System.ComponentModel命名空间里定义的CancelEventHandler委托结合工作,如果设置CancelEventArgs.Cancel属性为true,可以阻止窗体被破坏,并指示它返回正常运行状态。如果设置CancelEventArgs.Cancel属性为false,Close事件触发并结束Windows。Forms应用程序,它将从应用程序域中被卸载,并在进程中结束。
相关文章推荐
- C#2008与.NET 3.5 高级程序设计读书笔记(14)-- LINQ
- C#2008与.NET 3.5 高级程序设计读书笔记(10)-- 集合与泛型
- C#2008与.NET 3.5 高级程序设计读书笔记(31)-- 构建ASP.NET网页
- C# 与 .Net 3.5 高级程序设计(第四版) 读书笔记(二)
- C#2008与.NET 3.5 高级程序设计读书笔记(25)-- WCF
- C# 与 .Net 3.5 高级程序设计(第四版) 读书笔记(三)
- C# 与 .Net 3.5 高级程序设计(第四版) 读书笔记(一)
- C#2008与.NET 3.5 高级程序设计读书笔记(8)--对象的生命周期
- C#2008与.NET 3.5 高级程序设计读书笔记(15)-- .NET程序集入门
- C#2008与.NET 3.5 高级程序设计读书笔记(5)--定义封装的类类型
- C#2008与.NET 3.5 高级程序设计读书笔记(12)-- 索引器
- C#2008与.NET 3.5 高级程序设计读书笔记(13)-- C#3.0的语言功能
- C#2008与.NET 3.5 高级程序设计读书笔记(21)-- 对象序列化
- C#2008与.NET 3.5 高级程序设计读书笔记(3)--C#核心编程结构I
- C#2008与.NET 3.5 高级程序设计读书笔记(6)--继承和多态
- C#2008与.NET 3.5 高级程序设计读书笔记(4)--C#核心编程结构II
- C#2008与.NET 3.5 高级程序设计读书笔记(16)-- 类型反射、晚期绑定和基于特性的编程
- C#2008与.NET 3.5 高级程序设计读书笔记(1)--.NET之道
- C#2008与.NET 3.5 高级程序设计读书笔记(23)-- ADO.NET之二:断开连接层
- C#2008与.NET 3.5 高级程序设计读书笔记(24)-- LINQ API编程