日期:2014-05-17 浏览次数:20907 次
我们已经讨论了有关Win Forms的最基本的知识,下面我们就来讨论Win Forms的一些深层次的特性。
较短的学习周期
Win Forms的首要目的是能够尽可能地提高开发人员在开发Win32平台应用程序的编程效率。无论是GDI还是窗口状态管理,在Win32中编程者相当困难的。例如,象WS_BORDER或WS_CAPTION等窗口风格只能在创建窗口时设定或修改,当然了,象WS_VISIBLE或WS_CHILD等窗口风格可以在已经创建的窗口上进行修改。Win Forms就能够消除这种不统一性,确保操作可以在所有时间以同一种方式进行,可以在任何时候以任何顺序修改Win Forms控制的属性,并产生希望的效果。在改变这些属性时需要创建新的HWND,Win
Forms会自动地创建窗口,并对它进行合理的设置。
使用Win Forms,获得控制的通知或事件也更加简单。所有的Win Forms事件都是基于一种被称作Delegates的通用语言运行库功能的。Delegates是一种安全函数的指针,可以为任何控制的任何事件添加Delegate事件自理程序,我们也无需通过重载创建一个处理所有事件的类,创建一个事件图,或者为一个类中的所有事件实现一个接口而只会执行其中的一个。事件也可以通过重载继承类进行处理,但一般情况下只有控制的创建者和在高级的应用程序设计中才会这样作。接收一个按钮的Click事件是相当简单的:
public class ButtonClickForm: System.WinForms.Form { private System.WinForms.Button button1; public ButtonClickForm() { // 创建按钮 button1 = new System.WinForms.Button(); // 添加事件处理程序 button1.AddOnClick(new System.EventHandler(button1_Click)); // 在窗体上添加按钮 this.Controls.Add(button1); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("button1 clicked!"); } } |
在上面的代码中,我们已经创建了一个按钮并添加了一个事件处理程序方法button1_Click,当该按钮被点击时,其中的几行代码就会开始执行。
着手开发Win Forms工程也是相当简单的。在Visual Studio .NET中创建Win Forms工程只会生成一个被编译的文件Form1.cs,而不会生成头文件、接口定义文件、引导应用程序文件、资源文件和库文件,工程所需要的所有信息都包含在窗体的代码中,其结果是工程可以很方便地由一个单一窗体组成的应用被扩充为包括有多个代码文件、复杂的由多窗体构成的应用程序。其中没有需要连接的临时对象文件,只有代码文件和已经建立的DLL文件。随着慢慢熟悉这种方法,创建.NET框架应用程序和C/C++应用程序在复杂性方面的判别就会越来越明显。由于信息只包含在代码文件中,在Visual
Studio .NET环境之外创建工程也是相当简单的,而无论是Visual Basic代码