C# Windows Forms应用程序浅谈

作为一个Windows开发者, 你应毫不犹豫成为Microsoft新的。NET的倡导者。在规范的客户端应用程序成为流行的同时,越来越多的组织正趋向于简单的,基于浏览器的可以通过网络交互(通常是Internet)的应用程序。

这就意味着编程正在从独立的应用程序模式向更丰富的面向组件的模块化应用程序转变。

.NET平台正是为推动这一运动――特别是被称为Windows Forms的。NET用户界面模型……NET使用了Windows Forms来编写一个应用程序的用户界面。你可以使用C#或Visual Basic.NET来创建这些特性。在这里我将向你展示C#为。NET平台创建基于Windows Forms用户方面的作用。这里的例程就是一个用C#写的基于Windows Forms的tic-tac-toe游戏。

每过几年,Windows的编程方式就会发生巨大的变化。去年夏天的Microsoft Professional Developers Conference (PDC)把Windows的开发者领回到了square one.而在几年前,平台才刚刚从DOS转变为Windows.现在,开发者已经解决了桌面上的问题。新的方向是开发Internet 框架来让愈来愈多的公司能搬到Web上。

在八十年代末,Windows开发者使用C和SDK写了大量的桌面应用程序,然后就是C++和框架,如Microsoft Foundation Class Library(MFC)。与此同时,VB开发领域也得到了坚实的立足点。在拥有强大优势诸如强大的开发环境和可管理开发者资源的runtime的面前,VB正逐步走向成熟,成为许多企业开发前端和中间层组件的得力工具。对于大多数其他应用程序,开发者都可以使用Windows Forms来创建用户界面。

让我们先总体看一下Windows Forms,然后再看一下使用C#来写基于C# Windows Forms应用程序需要些什么。在外壳下,所有的Windows应用程序都是以同样的方式运行的。Windows会维护Windows类的集合(即windows的行为都是在WndProc()函数中定义的)。在Windows编程的早期,最大的任务就是写大约80行的样板代码为了能让它正确的运行,后来逐渐通过添加事件句炳来开发应用程序。MFC就使得开发者不用再去为Winmain()和WndProc()费神了。Windows Forms继承了这种忽略编程细节的趋势,所以你不必花大量的时间在书写那些枯燥的代码上。

随着基于SDK和MFC的发展,你可能仍然保留作为开发者对Windows API的钟爱。如果你需要严格的控制你的应用程序,使用C和SDK――或甚至是MFC来开发应用程序是必要的。如果你希望有灵活性,基于SDK或MFC的开发仍然是需要的。但是如果你觉得一个更简单,更直观的开发环境比严格控制或灵活性更重要的话,使用Windows Forms来开发基于窗体的用程序可能更适合你。

编写客户代码

有了Windows Forms,你就可以编写.NET平台的客户代码。如果你曾使用过VB,你就可能对它基于窗体的应用程序模型很熟悉。而Windows Forms与此很相似。SDK或MFC的编程风格是直接与Windows API交互的,甚至当MFC中出现了框架,你仍仅仅是从底层的Windows API迈出了一小步。与此相反,Windows Forms隐藏了旧式Windows编程风格中的样板代码的细节,以带有菜单和标题栏的正规窗体的形式显示。Windows Forms能响应标准的事件,如鼠标的移动和菜单的选择,而且它们也可以控制在客户区的行为。然而,管理这些特性的语法比你用SDK或MFC编写程序的语法要抽象的多。

你可以以标准的窗口、多文档界面(MDI)、对话框或绘图程序表面的形式显示Windows Forms.随着VB的发展,它使用了用户界面(UI)发展中的窗体模型,即给一个Windows 窗体定义用户界面,通常就是意味着能在窗体的客户区安放控件。但是Windows Forms还可以更好的渲染你所希望的绘图表面。

除了能渲染绘图表面和管理标准控件集,Windows Forms通过属性来定义它们的外观。例如,要想编程在屏幕上移动一下Windows窗体,你只要设置Windows 窗体的X属性。Windows Forms使用方法来管理它们的行为,而且它们也可以通过响应事件来定义与用户的交互。

Windows Forms是在。NET Framework或Common Language Runtime(CLR)中运行的类的实例。编写一个C# Windows Forms应用程序通常就是实例化WinForm类的一个实例,配置它的属性并建立事件句柄。因为一个Windows 窗体就是一个标准的基于CLR的类,是完全支持继承的,你可以以标准的,面向对象的方式来建立基于Windows Forms的类之间的继承关系。

现在,让我们看一下开发环境。Microsoft的Visual Studio.NET不断在进步。不幸的是,IDE的PDC Tech Preview版本不是很稳定。所以我用C#开发的开发环境中包含一个文本编辑器和一个命令行编译器。Beta 1解决了很多方面,使VS.NET成为开发C#应用程序的可行环境。

但是如果你不喜欢使用VS.NET的beta版,那你也可以回到命令行的方式。C#的命令行编译器名为CSC.EXE.当运行它时,它通过命令行决定输出的位置、需要的资源文件、应用程序要使用的系统文件和最后可执行文件中要包含的C#文件。例如,以下命令行编译了一个名为someApp.cs的文件,引入了System.DLL的多种系统功能,在资源中包含了一个JPG文件,并且把最终的可执行文件放到名为bin的目录下:

csc /out:bin /R:System.DLL /res:XYZ.JPG someApp.cs

相关推荐