第1篇 初识 1
第1章 初识.NET 2
1.1 什么是.NET 2
1.1.1 .NET与传统Windows的不同 2
1.1.2 从.NET看软件技术的发展趋势 3
1.2 搭建.NET运行平台 6
1.3 使用命令行编译VB.NET程序 12
1.4 第一个可视化的.NET程序 16
1.5 .NET程序运行原理 24
1.5.1 理解机器指令 24
1.5.2 程序与编译器 25
1.5.3 .NET程序运行原理 25
1.5.4 发布.NET程序 27
第2章 .NET程序设计基础 30
2.1 使用VS.NET设计用户界面 30
2.1.1 窗体的使用 31
2.1.2 常见控件使用 41
2.1.3 界面布局 52
2.1.4 绘制图标 54
2.2 VB.NET语法基础 56
2.2.1 基本数据类型 56
2.2.2 语句与控制结构 63
2.2.3 对象与类 72
2.2.4 变量的类型 84
2.2.5 函数与方法重载 89
2.2.6 字符串使用 91
2.2.7 递归 93
2.2.8 .NET中的集合 96
2.2.9 VB.NET开发实践:多窗体编程 99
2.3 克隆Word——MyEditor程序分析 103
2.3.1 主窗体frmEditor界面设计 104
2.3.2 结束程序运行 104
2.3.3 打开文件功能的实现 104
2.3.4 编辑功能的实现 108
2.3.5 查找功能的实现 113
2.4 编译项目 119
2.4.1 Debug与Release版本 119
2.4.2 设置EXE文件图标 120
2.4.3 MyEditor程序分析小结 120
第2篇 入门 121
第3章 面向对象的程序设计语言 122
3.1 .NET语言族 122
3.2 类的创建与销毁过程 123
3.2.1 类的创建与构造函数 123
3.2.2 类的销毁与垃圾收集 126
3.3 ByRef与ByVal 126
3.3.1 简单类型参数的传送 126
3.3.2 引用类型参数的传送 128
3.4 面向对象特性 130
3.4.1 继承 130
3.4.2 多态 137
3.4.3 函数模板——委托 140
3.4.4 事件 142
3.5 异常处理 144
3.5.1 程序的健壮性 144
3.5.2 使用异常处理保证程序的健壮性 145
3.5.3 异常的捕获 145
3.6 面向对象编程实战 146
3.6.1 什么是应用程序向导 146
3.6.2 设计一个向导程序框架 147
3.6.3 向导框架代码分析 148
3.6.4 小结 153
第4章 Windows Form程序设计 154
4.1 组件开发与使用基础 154
4.1.1 可视化组件与非可视化组件 154
4.1.2 使用第三方控件 155
4.1.3 容器控件 156
4.1.4 移动焦点 159
4.2.1 窗体级验证与字段级验证 161
4.2 数据验证 161
4.2.2 正则表达式 164
4.3 读取按键 167
4.3.1 KeyPress事件 167
4.3.2 KeyDown和KeyUp事件 167
4.3.3 窗体的KeyPreview属性 168
4.4 鼠标操作 168
4.4.1 区分鼠标按键 168
4.4.2 检测鼠标滚轮 169
4.4.3 设置等待光标 169
4.4.4 自定义鼠标光标 170
4.5 流 171
4.5.1 使用MemoryStream 172
4.5.2 使用FileStream 173
4.5.3 操作流对象 175
4.6.2 剪贴板编程原理 178
4.6.1 使用剪贴板 178
4.6 剪贴板原理 178
4.6.3 剪贴板编程实例 180
4.7 综合实例:开发资源管理器 183
4.7.1 软件总体构想 184
4.7.2 文件操作 184
4.7.3 文件夹操作 186
4.7.4 TreeView使用 189
4.7.5 ListView使用 193
4.7.6 软件体系结构设计 195
第3篇 深入 209
第5章 .NET数据库编程概览 210
5.1 数据库编程技术基础 210
5.1.1 数据库的基本概念 211
5.1.2 SQL简介 212
5.1.3 关系数据库的三种操作 212
5.2.1 用户界面设计 214
5.2.2 开始编码 214
5.2 使用.NET开发数据库应用程序 214
第6章 SQL入门 221
6.1 搭建SQL运行平台 221
6.2 SQL语句的编写 222
6.2.1 选择数据 222
6.2.2 排序 226
6.2.3 聚集函数 227
6.2.4 分组 228
6.2.5 其他数据操作 229
6.3 SQL命令使用技巧 232
6.3.1 计算数学表达式 232
6.3.2 在返回结果中增加不属于任何一个表的列 233
6.3.3 嵌套子查询 233
6.3.4 流程控制 234
第7章 编程访问数据库 236
7.1 使用ADO.NET表示数据库模型 236
7.1.1 ADO.NET对象模型 236
7.1.2 动态创建数据库 237
7.1.3 使用DataRelation对象表达数据间的关系 239
7.2 连接数据库 244
7.2.1 四种Connection对象 244
7.2.2 连接数据库的基本步骤 244
7.3 向数据库发送SQL命令 246
7.3.1 Command对象的创建 246
7.3.2 执行无返回行的SQL命令 247
7.3.3 进行单值查询 247
7.3.4 使用带参数的SQL命令 248
7.3.5 调用存储过程 249
7.4 获取数据 252
7.4.1 填充数据 252
7.4.2 获取数据库架构信息 254
7.5 显示数据 256
7.5.1 使用DataGrid显示数据 256
7.5.2 在数据集中移动 263
7.6 编辑数据 270
7.6.1 增加数据 270
7.6.2 删除数据 273
7.6.3 修改数据 274
7.7 保存数据到数据库 275
7.7.1 数据更新原理 275
7.7.2 手动更新数据库 278
7.7.3 使用DataAdapter更新数据库 282
7.7.4 处理更新失败 283
7.8 查找与过滤数据 284
7.8.1 在DataTable中查找 285
7.8.2 使用DataView筛选数据 285
7.9 统计与分析 289
7.9.1 计算列 290
7.9.2 Compute方法 292
第8章 数据库编程技巧与实例分析 294
8.1 开发可复用的数据存取类 294
8.1.1 设计数据访问类 294
8.1.2 访问存储过程 298
8.1.3 使用BLOB字段 301
8.1.4 获取数据库元信息 304
8.2 开发客户信息管理系统 305
8.2.1 功能简介 306
8.2.2 开发过程 307
8.2.3 养成良好的编程习惯 320
第9章 使用XML处理数据 322
9.1 XML基础知识 322
9.1.1 什么是XML 322
9.1.2 用XML表达数据 323
9.2 在.NET中处理XML数据 326
9.2.1 使用DOM处理XML数据 326
9.2.2 在程序使用DOM处理XML数据 329
9.2.3 基于流机制来处理XML数据 342
9.2.4 ADO.NET与XML 348
第10章 计算机绘图原理及其应用 357
10.1 计算机绘图原理 357
10.1.1 在计算机中处理图形图像 357
10.1.2 使用GDI+绘图 359
10.1.3 绘图对象 367
10.1.4 坐标变换 384
10.1.5 绘制数学图案 387
10.1.6 处理图像 397
10.2 综合示例:GDIClock程序分析 402
10.2.1 怎样阅读别人写的程序代码 403
10.2.2 程序架构 404
10.2.3 实现程序的开机自动运行 405
10.2.4 实现程序退出时保存设置 408
10.2.5 创建图形菜单 409
10.2.6 绘制时钟 410
10.2.7 实现闹钟 416
10.2.8 提升系统性能 417
10.2.9 小结 419
10.3 设计打印系统 419
10.3.1 计算机打印原理 419
10.3.2 控制打印 432
10.3.3 打印系统开发实例——邮签打印 436
第4篇 精通 445
第11章 面向对象软件编程基础 446
11.1 对软件的再认识 446
11.1.1 理解软件的概念 446
11.1.2 软件开发是一项系统工程 446
11.1.3 软件开发的7种武器 448
11.2 面向对象编程概述 449
11.2.1 掌握编程的基本原则 451
11.2.2 掌握编程的基本方法 456
11.2.3 面向对象编程实例分析 459
11.3 现代面向对象技术的基石之一:动态链接技术 464
11.3.1 动态链接技术的由来 464
11.3.2 Windows动态链接技术的概貌 465
11.3.3 .NET下动态链接技术的发展 469
11.4 UML使用入门 471
11.4.1 UML简介 472
11.4.2 使用UML类图 475
11.4.3 使用UML包图 482
11.4.4 使用用例图描述系统功能 483
11.4.5 使用UML描述系统静态结构 483
11.4.6 使用UML描述系统动态特性 484
11.4.7 在软件开发中使用UML 486
第12章 基于组件的软件开发 488
12.1 CBD导论 488
12.1.1 什么是CBD 488
12.1.2 在软件开发中采用CBD的必要性 489
12.1.3 组件化开发基础 490
12.2 开发自定义.NET组件实例 495
12.2.1 AutoComplete的含义 495
12.2.2 设计AutoComplete文本框初步开发方案 496
12.2.3 实现AutoComplete功能 496
12.2.4 对程序进行重构 498
12.2.6 定义自己的控件 499
12.2.5 组件化迈出第一步 499
12.2.7 优化性能 501
12.2.8 封装多线程功能到自定义控件中 504
12.2.9 小结 504
12.3 混合语言开发 505
12.3.1 组合多种语言开发的组件 505
12.3.2 混合语言组件的继承 508
12.3.3 混合语言组件间的多态调用 509
12.4 动态组件插拔 512
12.3.4 小结 512
12.4.1 设计示例用到的组件 514
12.4.2 读取XML配置文件 514
12.4.3 动态创建对象 516
12.4.4 在主程序中动态装载组件 517
12.4.5 小结 518
第13章 面向对象软件开发实践 520
13.1 系统分析与设计 520
13.1.1 缘起 520
13.1.2 确定系统功能 521
13.1.3 技术方案构想 522
13.1.4 体系结构设计 526
13.2 开发自定义树控件SuperTreeView 529
13.2.1 创建自定义控件项目 529
13.2.2 补习面向对象理论 530
13.2.3 实现树的基本操作功能 531
13.2.4 在树中查找节点 536
13.2.5 小结 538
13.3 开发SuperRichTextBox控件 538
13.3.1 设计封装方案 539
13.3.2 应用平台调用技术 541
13.3.3 支持拖动编辑 544
13.3.4 插入行号 548
13.3.5 使用自定义控件“包”起一切 554
13.4 用组件装配系统 557
13.4.1 设计用户界面 557
13.4.2 处理树节点点击事件 559
13.4.3 实现所见即所得的编辑 560
13.4.4 支持键盘操作 561
13.4.5 数据的备份与恢复 562
13.4.6 压缩数据库 564
13.4.7 设置系统参数 565
13.4.8 实现历史记录 568
13.4.9 解决节点移动带来的画面闪烁问题 571
13.5.1 编写软件测试报告 572
13.5 测试排错 572
13.5.2 排除“节点无法删除”的错误 573
13.5.3 排除节点定位算法引发的数据丢失错误 574
13.5.4 排除事件激发次序引发的数据丢失错误 575
13.5.5 进一步改进PersonalInfo 579
附录A 常见Windows控件中英文名术语对照表 580
附录B 本书缩略语对照表 581
参考文献 582
后记 583