★一本非常出色的WindowsForms专著,它在这个领域所发掘的深度远远超过普通的.NET编程书籍!
本书由浅入深地介绍WindowsForms编程的技巧和各种实用方法。本书先详细介绍了菜单、状态条、可复用类库、文件对话框、文本框、按钮、列表框、组合框、选项卡控件等WindowsForms基础知识,然后在高阶应用中还介绍了自定义控件、列表视图、资源管理器、树型视图、多文档界面和数据绑定等扩展性内容。本书内容详实,实用性极强,通过大量的图表和程序实例形象而立体地说明了各种控件的操作和需要注意的重难点,可以使读者领略到使用WindowsForms编程的轻松和乐趣。
本书适合计算机编程开发人员参考。
本书详细描述WindowsForms命名空间中的大多数类,重点讲解System.Windows.Forms命名空间,对WindowsForms进行了系统的介绍。
本书以一个相册应用程序为主线,不断融入新的WindowsForms特性,使它从一个简单的只能显示单张照片的应用程序逐步发展成为一个具有丰富特性的产品级相册应用程序,并能够实现多项高级功能。
无论对开发桌面应用程序的Windows程序员,还是正在学习WindowsForms知识的开发人员,或者是毫无Windows开发经验的初学者,相信本书都是最佳的选择。
■自绘制列表框
■列表和树型视图
■多文档界面
■数据网格和数据绑定
■拖放
■实现可重用程序库、自动填充的组合框、键盘和鼠标处理、打印和打印预览以及嵌入式Web浏览器
展开
--联合国高级架构师BerndtHamboeck
“对开发人员来说是美味可口的大餐,而对WindowsForms来讲是另类的革新。”
--微软技术和CatalystIT服务部主任DaveCorun
译者序
本书是美国.NET技术专家ErikBrown的力作。本书以生动翔实的语言,描述了在VisualStudioC#2005开发环境中进行WindowsForms编程的各方面细节。
本书紧紧围绕WindowsForms这个主题,对各种WindowsForms特性进行了极为详细的介绍,而对其他细节涉墨甚少。本书并没有介绍面向对象编程,也没有花太多的篇幅介绍C#编程语言的细节(只是在附录A简单地描述了C#语言的结构)。关于VisualStudioC#2005开发环境的许多使用技巧,则分散在具体的应用场合进行说明,而不是开辟专门的章节予以介绍。根据译者的体验,前者的效果要好得多。
如果读者想寻找一本教材,认真学习WindowsForms编程的细节,那么本书是一个非常理想的选择。本书以一个相册应用程序为主线,在学习过程中不断融入新的WindowsForms特性,使它从一个简单的只能显示单张照片的应用程序发展成为一个具有丰富特性的产品级相册应用程序,能够实现高级的浏览和打印功能。
本书的另一个特性是它所采用的表格代码,把实现每个特性所需要的代码以表格的形式分步骤显示,虽然对译者而言增加了很大的工作量,但对于读者而言,这样的代码形式看起来非常清楚,能够立即明白完成某一步骤需要哪些代码。
如果说这本书有什么缺陷的话,就是它的整体性非常强,需要读者耐心地从头到尾读完这本书,才能收到良好的效果。如果读者只是想了解某个WindowsForms特性(例如TreeView控件)的内容,可能因为本书内容的连贯性太强而无从下手。从这个意义上说,这本书更适合当教材,而不是作为参考手册。
不管怎样,这是一本非常出色的WindowsForms专著,它在这个领域所发掘的深度远远超过普通的.NET编程书籍。如果读者能够耐心地读完本书,一定可以取得巨大的收获。
前言
当我还在学校的时候,当我毕业后在不同的创业公司打拼的时候,我深信UNIX将统治这个世界,从来不曾想到自己会站在计算机行业的“公敌”Microsoft一边。我饶有趣味地发现自己出版了不止一本书,为Microsoft的技术传经布道。我想读者应该知道自己该走什么路,而我现在已经完全投身于Windows的开发之中。幸运的是,我对自己的转变深感快乐,而我原本以为自己是误入歧途。
至于出版这本书的想法,要想实现起来却并不容易。创作所带来的激情很快就会消退,你会意识到自己不仅想写一本书,而且想写一本好书。这会改变你的思维和方法,因为你必须付出极大的精力和时间使它变“好”。然后有一天,你又会发现一个事实,你不仅想写一本好书,而且想写一本人们喜欢并且愿意购买的书。
这正是我写作本书第1版和第2版的经历。第1版获得了相当的成功,因此为.NET2.0推出第2版不仅顺理成章,而且看上去似乎很容易。遗憾的是,Microsoft那帮聪明的伙计们在WindowsForms中添加并修改了相当多的内容,使我感觉就像完全重写一本新书一样。
读者可能会以为写作第2版要比第1版更为容易,其实不然。虽然我知道如何对正文进行组织,并且知道基本的格式是一样的。但是,作为一名“经验更丰富的作者”,我必须对本书以及书中的示例程序进行更合理的设计。每章的内容更为简捷,我试图利用自己在Unisys公司所积累的.NET企业级应用程序的开发经验,实现更好的程序设计。我在主要的MyPhotos应用程序之外添加了一些分支,覆盖了一些其他材料,为一些有趣的话题提供了示例代码。
另外一个原因是当我编写本书的第1版时还是一名顾问,因此我可以脱开几个星期,全身心地投入到写作之中。现在,作为一名全职的项目经理,找出充裕的时间来完成第2版的写作并不是一件容易的事情。我的家庭和朋友对这两个版本的写作提供了相当大的支持,对此我深表谢意。
最后,我发现自己对本书的第2版非常满意。有些关键的概念,例如加密、自定义控件、进度条等,以相当自然的方式融入到本书之中。我喜欢第2版的章节规划,并且从第1版的18章扩展到第2版的23章。我对索引部分也是相当满意,相信读者会发现它比第1版的索引更为有用。第1版和第2版的另一处较大修改是书名。这个版本被命名为“WindowsFormsinAction”,以区别于其他书籍,并且与Manning新的“InAction”系列保持一致。书中大量使用的“活动-结果”表格正是这个新书名的由来。新的书名、新的封面、新的章节,就像推出一本新书一样。希望读者能够喜欢!
引言
NET框架所涵盖的主题相当广泛,用一本书的篇幅覆盖所有的主题是不可能的。本节介绍本书的焦点,并对正文的内容以及约定进行了简单的介绍。本节的末尾描述了本书的在线论坛,读者可以通过它了解和本书有关的各种问题和评论,并了解如何从Internet下载本书所使用的源代码。
介绍.NET
Microsoft善于改造自己。它最初是一家纯粹的操作系统公司,随后对业务进行了拓展,推出了像Word和Excel这样的办公软件,后来又通过InternetExplorer把目光瞄向了Internet。创建.NET的动力很可能来自Internet和Java作为大规模计算机解决方案的通用环境所获得的成功。.NET框架的第1个版定义了两个重要的概念。第1个是一种全新的语言C#,第2个是基于Windows的解决方案的标准框架。
理解C#的最简单方法也许是想象有人把C++的所有恼人之处都写下来,然后设计一种语言,把这些恼人之处都去掉。例如,在C++中,处理指针是件痛苦的事情,有很多代码错误(例如if(x=5))并没有被编译器所捕捉,操纵字符串比较困难,没有一种很好的方式把一个对象安全地“向下转换”为派生类型的对象。C和C++的前驱B和BCPL语言并没有定义正式的类型系统,这是因为考虑到在这些语言中整数、指数和字符的互通本质。
C#语言进行了精心设计,既保留了C和C++语言的灵活性,又对类型系统以及语言的语法进行正式化。C++中的许多常见运行时错误在C#中变成了编译错误。其他明显的区别是C#增加了内置的字符串类型,并且不再使用全局变量,把关键的系统和应用程序错误集成了一种通用的异常模型中。本书的附录A对C#语言的语法、关键字和特性进行了简单介绍。后面的“.NET2.0的新特性”一节对.NET框架2.0版本所作的主要修改进行了总结。
NET框架为大多数Microsoft的开发技术和环境提供了一个公共的主题,并随着时间而发生变化。除了把公司聚集在一个称为.NET的单一品牌之下这个好处之外,.NET框架还具有一个重要的技术目标。这个框架在本质上是在Windows平台上所运行的应用程序的一个执行环境。
Java环境的核心是提供一个环境,允许在任何操作系统中运行由单一的语言所编写的程序。.NET框架的核心则是提供一个环境,允许在单个操作系统中运行使用任何语言所编写的程序。很难说哪个更好,作者在这里只是为了指出Java和.NET的基本目标是不同的。
.NET框架是以命名空间的形式组织的。第1章将讨论这个概念,但是读者在这里只要简单地知道命名空间定义了相关联的类以及其他类型的逻辑集合。关于.NET框架所支持的各个命名空间的总结,可以参考本书后面的附录B。
命名空间对.NET框架所支持的大量对象集合进行结构化。对于作者而言,它指引了写作本书的方向和焦点。本书的焦点是System.Windows.Forms命名空间,可以简单地称为WindowsForms。WindowsForms应用程序就是由Windows操作系统所执行的程序,这种程序所使用的用户界面特性正是Windows桌面用户极为熟悉的。
本书试图对WindowsForms进行系统的介绍,将介绍这个命名空间所定义的大多数类型。附录C提供了WindowsForms命名空间的类图,并提供了参考表格或参考章节,帮助读者快速找到每个类或类型在书中定义的地方。