C#2008与.NET 3.5 高级程序设计读书笔记(27) WindowsForms编程

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等)提供许多对话框。如果标准对话框不适合需求,你当然可以构建自定义的对话框。

2.剖析Form

继承层次

下表概括了Form继承链中每个父类的作用

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应用程序,它将从应用程序域中被卸载,并在进程中结束。

原文地址:https://www.cnblogs.com/engine1984/p/1807246.html