商家名称 | 信用等级 | 购买信息 | 订购本书 |
Windows Forms 编程实战 [平装] | |||
Windows Forms 编程实战 [平装] |
本书由浅人深地介绍Windows Forms编程的技巧和各种实用方法。本书先详细介绍了菜单、状态条、可复用类库、文件对话框、文本框、按钮、列表框、组合框、选项卡控件等Windows Forms基础知识,然后在高阶应用中还介绍了自定义控件、列表视图、资源管理器、树型视图、多文档界面和数据绑定等扩展性内容。本书内容详实,实用性极强,通过大量的图表和程序实例形象而立体地说明了各种控件的操作和需要注意的重难点,可以使读者领略到使用Windows Forms编程的轻松和乐趣。
本书适合计算机编程开发人员参考。
书评
“超值的章节,超值的书!”
——联合国高级架构师Berndt Hamboeck
“对开发人员来说是美味可口的大餐,而对Windows Forms来讲是另类的革新。”
——微软技术和Catalyst IT服务部主任Dave Corun
译者序
本书是美国.NET技术专家Erik Brown的力作。本书以生动翔实的语言,描述了在Visual Studio C# 2005开发环境中进行Windows Forms编程的各方面细节。
本书紧紧围绕Windows Forms这个主题,对各种Windows Forms特性进行了极为详细的介绍,而对其他细节涉墨甚少。本书并没有介绍面向对象编程,也没有花太多的篇幅介绍C#编程语言的细节(只是在附录A简单地描述了C#语言的结构)。关于Visual Studio C# 2005开发环境的许多使用技巧,则分散在具体的应用场合进行说明,而不是开辟专门的章节予以介绍。根据译者的体验,前者的效果要好得多。
如果读者想寻找一本教材,认真学习Windows Forms编程的细节,那么本书是一个非常理想的选择。本书以一个相册应用程序为主线,在学习过程中不断融入新的Windows Forms特性,使它从一个简单的只能显示单张照片的应用程序发展成为一个具有丰富特性的产品级相册应用程序,能够实现高级的浏览和打印功能。
本书的另一个特性是它所采用的表格代码,把实现每个特性所需要的代码以表格的形式分步骤显示,虽然对译者而言增加了很大的工作量,但对于读者而言,这样的代码形式看起来非常清楚,能够立即明白完成某一步骤需要哪些代码。
如果说这本书有什么缺陷的话,就是它的整体性非常强,需要读者耐心地从头到尾读完这本书,才能收到良好的效果。如果读者只是想了解某个Windows Forms特性(例如TreeView控件)的内容,可能因为本书内容的连贯性太强而无从下手。从这个意义上说,这本书更适合当教材,而不是作为参考手册。
不管怎样,这是一本非常出色的Windows Forms专著,它在这个领域所发掘的深度远远超过普通的.NET编程书籍。如果读者能够耐心地读完本书,一定可以取得巨大的收获。
前言
当我还在学校的时候,当我毕业后在不同的创业公司打拼的时候,我深信UNIX将统治这个世界,从来不曾想到自己会站在计算机行业的“公敌”Microsoft一边。我饶有趣味地发现自己出版了不止一本书,为Microsoft的技术传经布道。我想读者应该知道自己该走什么路,而我现在已经完全投身于Windows的开发之中。幸运的是,我对自己的转变深感快乐,而我原本以为自己是误入歧途。
至于出版这本书的想法,要想实现起来却并不容易。创作所带来的激情很快就会消退,你会意识到自己不仅想写一本书,而且想写一本好书。这会改变你的思维和方法,因为你必须付出极大的精力和时间使它变“好”。然后有一天,你又会发现一个事实,你不仅想写一本好书,而且想写一本人们喜欢并且愿意购买的书。
这正是我写作本书第1版和第2版的经历。第1版获得了相当的成功,因此为.NET 2.0推出第2版不仅顺理成章,而且看上去似乎很容易。遗憾的是,Microsoft那帮聪明的伙计们在Windows Forms中添加并修改了相当多的内容,使我感觉就像完全重写一本新书一样。
读者可能会以为写作第2版要比第1版更为容易,其实不然。虽然我知道如何对正文进行组织,并且知道基本的格式是一样的。但是,作为一名“经验更丰富的作者”,我必须对本书以及书中的示例程序进行更合理的设计。每章的内容更为简捷,我试图利用自己在Unisys公司所积累的.NET企业级应用程序的开发经验,实现更好的程序设计。我在主要的MyPhotos应用程序之外添加了一些分支,覆盖了一些其他材料,为一些有趣的话题提供了示例代码。
另外一个原因是当我编写本书的第1版时还是一名顾问,因此我可以脱开几个星期,全身心地投入到写作之中。现在,作为一名全职的项目经理,找出充裕的时间来完成第2版的写作并不是一件容易的事情。我的家庭和朋友对这两个版本的写作提供了相当大的支持,对此我深表谢意。
最后,我发现自己对本书的第2版非常满意。有些关键的概念,例如加密、自定义控件、进度条等,以相当自然的方式融入到本书之中。我喜欢第2版的章节规划,并且从第1版的18章扩展到第2版的23章。我对索引部分也是相当满意,相信读者会发现它比第1版的索引更为有用。第1版和第2版的另一处较大修改是书名。这个版本被命名为“Windows Forms in Action”,以区别于其他书籍,并且与Manning新的“In Action”系列保持一致。书中大量使用的“活动-结果”表格正是这个新书名的由来。新的书名、新的封面、新的章节,就像推出一本新书一样。希望读者能够喜欢!
引言
NET框架所涵盖的主题相当广泛,用一本书的篇幅覆盖所有的主题是不可能的。本节介绍本书的焦点,并对正文的内容以及约定进行了简单的介绍。本节的末尾描述了本书的在线论坛,读者可以通过它了解和本书有关的各种问题和评论,并了解如何从Internet下载本书所使用的源代码。
介绍.NET
Microsoft善于改造自己。它最初是一家纯粹的操作系统公司,随后对业务进行了拓展,推出了像Word和Excel这样的办公软件,后来又通过Internet Explorer把目光瞄向了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#语言的语法、关键字和特性进行了简单介绍。后面的“.NET 2.0的新特性”一节对.NET框架2.0版本所作的主要修改进行了总结。
.NET框架为大多数Microsoft的开发技术和环境提供了一个公共的主题,并随着时间而发生变化。除了把公司聚集在一个称为.NET的单一品牌之下这个好处之外,.NET框架还具有一个重要的技术目标。这个框架在本质上是在Windows平台上所运行的应用程序的一个执行环境。
Java环境的核心是提供一个环境,允许在任何操作系统中运行由单一的语言所编写的程序。.NET框架的核心则是提供一个环境,允许在单个操作系统中运行使用任何语言所编写的程序。很难说哪个更好,作者在这里只是为了指出Java和.NET的基本目标是不同的。
.NET框架是以命名空间的形式组织的。第1章将讨论这个概念,但是读者在这里只要简单地知道命名空间定义了相关联的类以及其他类型的逻辑集合。关于.NET框架所支持的各个命名空间的总结,可以参考本书后面的附录B。
命名空间对.NET框架所支持的大量对象集合进行结构化。对于作者而言,它指引了写作本书的方向和焦点。本书的焦点是System.Windows.Forms命名空间,可以简单地称为Windows Forms。Windows Forms应用程序就是由Windows操作系统所执行的程序,这种程序所使用的用户界面特性正是Windows桌面用户极为熟悉的。
本书试图对Windows Forms进行系统的介绍,将介绍这个命名空间所定义的大多数类型。附录C提供了Windows Forms命名空间的类图,并提供了参考表格或参考章节,帮助读者快速找到每个类或类型在书中定义的地方。
作者:(美)布朗 译者:徐波 等
作者简介:
Erik Brown,是数学家出身,具有17年的软件开发、软件架构和软件管理的丰富经验,同时也是成功创办过3家公司的企业家。他是基于Windows的应用程序和数据驱动接口方面的咨询专家。目前他在Unisys公司担任项目经理。
译者简介:
徐波,浙江宁波人,熟悉C、C++和Java语言。2002年开始从事计算机技术图书翻译,第一部译作《C专家编程》博得好评,其谦逊平和的态度也使读者产生好感。他技术视野广阔,翻译文笔优美,是颇具潜力的译作者。
第1部分 欢迎进入Windows Forms世界
第1章 初识Windows Forms2
1.1 用C#编程2
1.1.1 命名空间和类4
1.1.2 构造函数和方法5
1.1.3 C#的类型5
1.1.4 Main方法7
1.1.5 Application类8
1.1.6 程序的执行9
1.2 Windows Forms控件9
1.2.1 using指令11
1.2.2 控件类12
1.2.3 Controls属性13
1.3 加载文件13
1.3.1 事件15
1.3.2 OpenFileDialog类16
1.3.3 Bitmap图像18
1.4 更改窗体的大小19
1.4.1 Anchor属性20
1.4.2 Dock属性21
1.5 回顾23
第2章 欢迎使用Visual Studio24
2.1 使用Visual Studio编程24
2.1.1 创建项目25
2.1.2 执行程序27
2.1.3 观察源代码27
2.2 Windows Forms控件31
2.2.1 AssemblyInfo文件31
2.2.2 对窗体进行重命名33
2.2.3 工具箱窗口34
2.3 加载文件38
2.3.1 在Visual Studio中处理事件38
2.3.2 处理异常41
2.4 改变窗体的大小
2.4.1 设置Anchor属性
2.4.2 设置Dock属性
2.5 回顾
第2部分 Windows Forms基础知识
第3章 菜单
3.1 控件和容器
3.1.1 控件类
3.1.2 容器类
3.2 菜单的本质
3.2.1 菜单术语
3.2.2 .NET中的菜单
3.3 菜单栏
3.3.1 添加菜单条
3.3.2 添加菜单项
3.3.3 添加下拉菜单项
3.4 菜单处理
3.4.1 通过设计窗口添加事件处理方法
3.4.2 通过属性窗口添加事件处理方法
3.5 回顾
第4章 上下文菜单和状态条
4.1 上下文菜单条
4.1.1 创建上下文菜单
4.1.2 向上下文菜单添加菜单项
4.1.3 共享上下文菜单
4.2 下拉事件和事件参数
4.2.1 处理子菜单项点击
4.2.2 在显示子菜单之前对它进行更改
4.3 状态条
4.3.1 创建状态条
4.3.2 添加状态条标签
4.4 回顾
第5章 可复用类库
5.1 类库
5.1.1 创建类库
5.1.2 使用命令行工具
5.1.3 创建Photograph类
5.1.4 定义类的属性
5.2 object类
5.2.1 比较object和Object
5.2.2 重写object类的方法
5.3 接口
5.3.1 接口和集合
5.3.2 理解集合类
5.4 泛型
5.4.1 泛型类
5.4.2 理解泛型集合
5.4.3 资源的销毁
5.5 回顾
第6章 文件和常用对话框
6.1 标准菜单
6.1.1 更改菜单栏
6.1.2 管理相册
6.2 常用文件对话框
6.2.1 创建新相册
6.2.2 打开相册
6.2.3 保存相册
6.2.4 打印和退出
6.3 流和写入器
6.3.1 Stream类
6.3.2 把相册写入磁盘
6.3.3 从磁盘中读取相册
6.4 相册管理
6.4.1 添加和删除图像
6.4.2 浏览相册
6.4.3 显示相册的状态
6.5 回顾
第7章 对话框
7.1 消息框
7.1.1 创建OK消息框
7.1.2 创建YesNo消息框
7.1.3 创建YesNoCancel消息框
7.2 Form.Close方法
7.2.1 比较Close和Dispose
7.2.2 拦截Form.Close方法
7.3 窗体和面板
7.3.1 Form类
7.3.2 创建对话框
7.4 无模式对话框
7.4.1 创建无模式对话框
7.4.2 向窗体添加面板和标签
7.4.3 更新PixelDialog控件
7.4.4 显示无模式对话框
7.4.5 更新PixelDialog窗体
7.4.6 追踪鼠标移动
7.5 回顾
第8章 文本框
8.1 窗体的继承
8.1.1 创建基类窗体
8.1.2 创建派生类窗体
8.2 标准文本框
8.2.1 添加文本框
8.2.2 添加多行文本框
8.2.3 连接对话框
8.3 掩码文本框
8.3.1 处理KeyPress事件
8.3.2 设置文本的掩码
8.4 回顾
第9章 按钮
9.1 下压按钮
9.1.1 Button类
9.1.2 扩展PhotoAlbum类
9.1.3 存储相册数据
9.2 单选按钮
9.2.1 RadioButton类
9.2.2 创建相册对话框
9.3 复选框按钮
9.3.1 CheckBox类
9.3.2 使用复选框按钮
9.3.3 完成AlbumEditDialog窗体
9.3.4 再次连接对话框
9.4 工具提示和错误提示
9.4.1 ToolTip类
9.4.2 显示工具提示
9.4.3 创建扩展器提供程序
9.4.4 ErrorProvider类
9.5 回顾
第10章 处理用户输入和加密
10.1 键盘事件
10.1.1 3种事件
10.1.2 处理KeyPress事件
10.1.3 处理KeyDown和KeyUp事件
10.1.4 预处理命令键
10.2 鼠标事件
10.2.1 MouseEventArgs类
10.2.2 使用鼠标事件实现
FlybyTextProvider
10.2.3 使用FlybyTextProvider类
10.3 加密
10.3.1 Cryptography命名空间
10.3.2 对数据进行加密
10.3.3 写入加密数据
10.3.4 读取加密数据
10.3.5 存储经过加密的相册
10.4 链接标签
10.4.1 LinkLabel类
10.4.2 保存加密相册
10.4.3 打开经过加密的相册
10.5 回顾
第11章 列表框
11.1 列表控件
11.1.1 ListControl类
11.1.2 创建一个新的解决方案
11.1.3 重构应用程序的代码
11.2 简单的列表框
11.2.1 ListBox类
11.2.2 显示数据源
11.2.3 选择列表元素
11.3 多选列表框
11.3.1 启用多选功能
11.3.2 改变列表项的顺序
11.3.3 删除列表元素
11.4 回顾
第12章 组合框
12.1 标准组合框
12.1.1 ComboBox类
12.1.2 创建组合框
12.1.3 选择列表框中的列表项
12.1.4 修改数据源
12.2 可编辑的组合框
12.2.1 再次创建组合框
12.2.2 动态更新组合框
12.3 自动完成
12.3.1 理解自动完成
12.3.2 在组合框中使用自动完成功能
12.4 列表项的格式化
12.4.1 格式化接口
12.4.2 实现IFormattable接口
12.4.3 在列表控件中使用格式化
12.4.4 实现自定义格式化
12.5 回顾
第13章 选项卡控件和选项卡页面
13.1 选项卡控件的基础知识
13.1.1 TabControl类
13.1.2 创建选项卡控件
13.2 选项卡页面的基础知识
13.2.1 TabPage类
13.2.2 创建选项卡页面
13.2.3 在选项卡页面中封装现有的控件
13.3 自绘制的选项卡
13.3.1 DrawItem事件
13.3.2 绘制页面的选项卡
13.3.3 使用自绘制的选项卡控件
13.4 自绘制的列表框
13.4.1 自定义的列表项
13.4.2 设置列表项的大小
13.4.3 绘制列表项
13.5 回顾
第14章 日期、日历和进度条
14.1 显示日期和时间
14.1.1 DateTimePicker类
14.1.2 创建DateTimePicker控件
14.2 日期和时间的格式
14.2.1 对日期和时间值进行格式化
14.2.2 自定义DateTimePicker控件
14.3 日历
14.3.1 MonthCalendar类
14.3.2 UserControl类
14.3.3 创建日历控件
14.3.4 初始化日历
14.3.5 在日历控件中处理鼠标点击
14.4 进度条
14.4.1 创建image用户控件
14.4.2 ProgressBar类
14.4.3 执行后台任务
14.5 回顾
第15章 装饰和美化
15.1 图像和光标
15.1.1 Bitmap类
15.1.2 图标
15.1.3 光标
15.2 嵌入式资源和声音
15.2.1 嵌入资源
15.2.2 使用项目资源文件
15.2.3 播放声音
15.3 滑动条
15.3.1 TrackBar类
15.3.2 使用滑动条
15.4 计时器
15.4.1 Timer类
15.4.2 使用计时器
15.5 回顾
第16章 工具条
16.1 工具条的基础知识
16.1.1 ToolStrip类
16.1.2 创建工具条
16.2 工具条项的基础知识
16.2.1 ToolStripItem类
16.2.2 添加标准工具条项
16.2.3 工具条项的对齐、溢出和其他特性
16.3 图像列表
16.3.1 ImageList类
16.3.2 创建图像列表
16.3.3 添加自定义工具条按钮
16.4 工具条容器
16.4.1 ToolStripContainer类
16.4.2 在容器中嵌入一个工具条
16.5 特殊的按钮项
16.5.1 切换按钮
16.5.2 下拉按钮
16.5.3 分隔按钮
16.6 回顾
第3部分 高级Windows Forms
第17章 自定义控件
17.1 扩展现有的控件
17.1.1 设计可滚动图片框
17.1.2 创建可滚动图片框
17.1.3 实现可滚动图片框
17.2 基于Control类的自定义控件
17.2.1 创建一个基于Control的类
17.2.2 自定义控件的公共特性
17.3 ScrollablePictureBox类
17.3.1 绘制控件
17.3.2 改变控件的大小
17.3.3 处理属性的变化
17.4 用户控件
17.5 Visual Studio中的自定义控件
17.5.1 对类的行为进行自定义
17.5.2 对类成员的行为进行自定义
17.5.3 对设计时的行为进行自定义
17.6 回顾
第18章 资源管理器界面和树形视图
18.1 界面风格
18.1.1 单文档界面
18.1.2 多文档界面窗口
18.1.3 资源管理器界面
18.2 .NET的资源管理器界面
18.2.1 SplitContainer类
18.2.2 TreeView类
18.2.3 创建资源管理器界面
18.3 树节点
18.3.1 TreeNode类
18.3.2 创建树节点
18.4 自定义树形视图
18.4.1 创建自定义树形视图
18.4.2 创建自定义的树节点
18.4.3 使用接口的自定义节点
18.4.4 展开和收缩树节点
18.4.5 选择和编辑树节点
18.4.6 集成自定义树形控件
18.5 回顾
第19章 列表视图
19.1 列表视图的基础知识
19.1.1 ListView类
19.1.2 创建列表视图
19.1.3 生成列表视图
19.2 列表视图的列
19.2.1 定义列标题
19.2.2 生成列表视图的列
19.2.3 对列表视图的列进行排序
19.3 列表视图的特性
19.3.1 选择列表项
19.3.2 编辑列表项的标签
19.3.3 激活列表项
19.4 虚拟项
19.5 回顾
第20章 多文档界面
20.1 MDI窗体
20.1.1 创建MDI容器
20.1.2 创建MDI子窗体
20.1.3 更新应用程序的入口
20.2 合并菜单
20.2.1 设置合并操作
20.2.2 设置合并索引
20.2.3 打开和关闭子窗体
20.3 MDI子窗体
20.3.1 合并工具条
20.3.2 显示像素数据
20.3.3 两次打开同一个相册
20.3.4 更新标题栏
20.4 MDI子窗体管理
20.4.1 排列MDI子窗体
20.4.2 显示MDI子窗体列表菜单
20.5 回顾
第21章 数据绑定
21.1 数据网格视图
21.1.1 DataGridView类
21.1.2 创建数据网格视图
21.1.3 填充数据网格视图
21.2 列和行
21.2.1 创建列
21.2.2 创建组合框列
21.2.3 理解带区和行
21.3 单元格
21.3.1 DataGridViewCell类
21.3.2 使用单元格类
21.3.3 保存经过修改的相册
21.4 回顾
第22章 双向数据绑定和绑定源
22.1 绑定列表
22.1.1 IBindingList接口
22.1.2 创建绑定列表
22.2 可编辑的对象
22.2.1 IEditableObject接口
22.2.2 创建可编辑的对象
22.3 简单数据绑定
22.3.1 BindingSource类
22.3.2 更改MyAlbumData应用程序
22.3.3 执行简单数据绑定
22.3.4 更新数据绑定控件
22.3.5 绑定浏览器
22.4 回顾
第23章 .NET杂记
23.1 打印
23.1.1 使用打印类
23.1.2 绘制打印页面
23.2 拖放
23.2.1 启动拖放操作
23.2.2 接收拖放数据
23.3 网页浏览
23.3.1 创建一个“关于”对话框
23.3.2 WebBrowser类
23.3.3 浏览网页
23.4 应用程序设置
23.4.1 存储位置设置
23.4.2 定义一个自定义设置
23.5 部署
23.5.1 创建安装项目
23.5.2 发布ClickOnce应用程序
23.6 回顾
附录A C#基础知识
附录B .NET命名空间
附录C 可视化索引
附录D 参考信息
喜欢Windows Forms 编程实战 [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务