C#高级编程(第7版) 目录

本书详细介绍了C#编程语言的基础知识与高级特性,包括.NET框架、核心C#编程概念、对象和类型、继承等内容,并深入探讨了如WCF、ADO.NET等高级主题。

目录

第Ⅰ部分  C# 语 言

第1章  .NET体系结构 3
1.1  C#与.NET的关系 3
1.2  公共语言运行库 4
1.2.1  平台无关性 4
1.2.2  提高性能 4
1.2.3  语言的互操作性 5
1.3  中间语言 6
1.3.1  面向对象和接口的支持 6
1.3.2  不同的值类型和引用类型 7
1.3.3  强数据类型化 8
1.3.4  通过异常处理错误 12
1.3.5  特性的使用 13
1.4  程序集 13
1.4.1  私有程序集 14
1.4.2  共享程序集 14
1.4.3  反射 14
1.4.4  并行编程 15
1.5  .NET Framework类 15
1.6  名称空间 16
1.7  用C#创建.NET应用程序 16
1.7.1  创建ASP.NET应用程序 16
1.7.2  创建Windows窗体 18
1.7.3  使用WPF 18
1.7.4  Windows控件 19
1.7.5  Windows服务 19
1.7.6  WCF 19
1.7.7  Windows WF 19
1.8  C#在.NET企业体系结构
中的作用 19
1.9  小结 21
第2章  核心C# 23
2.1  第一个C#程序 23
2.1.1  代码 24
2.1.2  编译并运行程序 24
2.1.3  详细介绍 25
2.2  变量 26
2.2.1  变量的初始化 27
2.2.2  类型推断 28
2.2.3  变量的作用域 29
2.2.4  常量 31
2.3  预定义数据类型 32
2.3.1  值类型和引用类型 32
2.3.2  CTS类型 33
2.3.3  预定义的值类型 33
2.3.4  预定义的引用类型 36
2.4  流控制 38
2.4.1  条件语句 38
2.4.2  循环 42
2.4.3  跳转语句 45
2.5  枚举 46
2.6  名称空间 47
2.6.1  using语句 49
2.6.2  名称空间的别名 49
2.7  Main()方法 50
2.7.1  多个Main()方法 50
2.7.2  给Main()方法传递参数 52
2.8  有关编译C#文件的更多内容 52
2.9  控制台I/O 54
2.10  使用注释 56
2.10.1  源文件中的内部注释 56
2.10.2  XML文档 56
2.11  C#预处理器指令 58
2.11.1  #define和 #undef 59
2.11.2  #if, #elif, #else和#endif 59
2.11.3  #warning和 # error 60
2.11.4  #region和#endregion 61
2.11.5  #line 61
2.11.6  #pragma 61
2.12  C#编程规则 62
2.12.1  关于标识符的规则 62
2.12.2  用法约定 63
2.13  小结 68
第3章  对象和类型 69
3.1  类和结构 69
3.2  类 70
3.2.1  数据成员 70
3.2.2  函数成员 71
3.2.3  只读字段 83
3.3  匿名类型 84
3.4  结构 85
3.4.1  结构是值类型 86
3.4.2  结构和继承 87
3.4.3  结构的构造函数 87
3.5  部分类 87
3.6  静态类 89
3.7  Object类 89
3.7.1  System.Object()方法 90
3.7.2  ToString()方法 90
3.8  扩展方法 92
3.9  小结 93
第4章  继承 95
4.1  继承的类型 95
4.1.1  实现继承和接口继承 95
4.1.2  多重继承 95
4.1.3  结构和类 96
4.2  实现继承 96
4.2.1  虚方法 97
4.2.2  隐藏方法 98
4.2.3  调用函数的基类版本 99
4.2.4  抽象类和抽象函数 100
4.2.5  密封类和密封方法 100
4.2.6  派生类的构造函数 101
4.3  修饰符 106
4.3.1  可见性修饰符 106
4.3.2  其他修饰符 106
4.4  接口 107
4.4.1  定义和实现接口 108
4.4.2  派生的接口 111
4.5  小结 113
第5章  泛型 115
5.1  概述 115
5.1.1  性能 116
5.1.2  类型安全 117
5.1.3  二进制代码的重用 117
5.1.4  代码的扩展 117
5.1.5  命名约定 118
5.2  创建泛型类 118
5.3  泛型类的功能 122
5.3.1  默认值 123
5.3.2  约束 123
5.3.3  继承 126
5.3.4  静态成员 127
5.4  泛型接口 127
5.4.1  协变和抗变 128
5.4.2  泛型接口的协变 129
5.4.3  泛型接口的抗变 130
5.5  泛型结构 131
5.6  泛型方法 134
5.6.1  泛型方法示例 134
5.6.2  带约束的泛型方法 135
5.6.3  带委托的泛型方法 136
5.6.4  泛型方法规范 137
5.7  小结 138
第6章  数组 139
6.1  简单数组 139
6.1.1  数组的声明 139
6.1.2  数组的初始化 139
6.1.3  访问数组元素 140
6.1.4  使用引用类型 141
6.2  多维数组 142
6.3  锯齿数组 143
6.4  Array类 144
6.4.1  创建数组 145
6.4.2  复制数组 146
6.4.3  排序 147
6.5  数组作为参数 150
6.5.1  数组协变 151
6.5.2  ArraySegment<T> 151
6.6  枚举 152
6.6.1  IEnumerator接口 152
6.6.2  foreach语句 153
6.6.3  yield语句 153
6.7  元组 158
6.8  结构比较 159
6.9  小结 162
第7章  运算符和类型强制转换 163
7.1  运算符 163
7.1.1  运算符的简化操作 165
7.1.2  运算符的优先级 169
7.2  类型的安全性 169
7.2.1  类型转换 170
7.2.2  装箱和拆箱 173
7.3  比较对象的相等性 174
7.3.1  比较引用类型的相等性 174
7.3.2  比较值类型的相等性 175
7.4  运算符重载 176
7.4.1  运算符的工作方式 177
7.4.2  运算符重载的示例:
Vector结构 178
7.5  用户定义的类型强制转换 185
7.5.1  实现用户定义的类型
强制转换 186
7.5.2  多重类型强制转换 192
7.6  小结 195
第8章  委托、Lambda表达式
和事件 197
8.1  委托 197
8.1.1  声明委托 198
8.1.2  使用委托 199
8.1.3  简单的委托示例 202
8.1.4  Action<T>和Func<T>
委托 204
8.1.5  BubbleSorter示例 204
8.1.6  多播委托 207
8.1.7  匿名方法 210
8.2  Lambda表达式 211
8.2.1  参数 212
8.2.2  多行代码 212
8.2.3  Lambda表达式外部的
变量 213
8.3  事件 214
8.3.1  事件发布程序 214
8.3.2  事件侦听器 216
8.3.3  弱事件 217
8.4  小结 220
第9章  字符串和正则表达式 221
9.1  System.String类 221
9.1.1  创建字符串 222
9.1.2  StringBuilder成员 225
9.1.3  格式字符串 226
9.2  正则表达式 231
9.2.1  正则表达式概述 232
9.2.2  RegularExpressions
Playaround示例 233
9.2.3  显示结果 235
9.2.4  匹配、组合和捕获 237
9.3  小结 238
第10章  集合 239
10.1  集合接口和类型 239
10.2  列表 240
10.2.1  创建列表 241
10.2.2  只读集合 250
10.3  队列 250
10.4  栈 254
10.5  链表 256
10.6  有序列表 261
10.7  字典 262
10.7.1  键的类型 263
10.7.2  字典示例 264
10.7.3  Lookup类 268
10.7.4  有序字典 269
10.8  集 269
10.9  可观察的集合 271
10.10  位数组 272
10.10.1  BitArray类 273
10.10.2  BitVector32结构 275
10.11  并发集合 277
10.12  性能 279
10.13  小结 281
第11章  LINQ 283
11.1  LINQ概述 283
11.1.1  列表和实体 283
11.1.2  LINQ查询 287
11.1.3  扩展方法 288
11.1.4  推迟查询的执行 289
11.2  标准的查询操作符 291
11.2.1  筛选 293
11.2.2  用索引筛选 293
11.2.3  类型筛选 294
11.2.4  复合的from子句 294
11.2.5  排序 295
11.2.6  分组 296
11.2.7  对嵌套的对象分组 297
11.2.8  连接 298
11.2.9  集合操作 300
11.2.10  合并 301
11.2.11  分区 302
11.2.12  聚合操作符 303
11.2.13  转换 304
11.2.14  生成操作符 305
11.3  并行LINQ 306
11.3.1  并行查询 306
11.3.2  分区器 307
11.3.3  取消 307
11.4  表达式树 308
11.5  LINQ提供程序 311
11.6  小结 311
第12章  动态语言扩展 313
12.1  DLR 313
12.2  dynamic类型 313
12.3  包含DLR ScriptRuntime 318
12.4  DynamicObject和
ExpandoObject 321
12.4.1  DynamicObject 321
12.4.2  ExpandoObject 323
12.5  小结 324
第13章  内存管理和指针 325
13.1  后台内存管理 325
13.1.1  值数据类型 325
13.1.2  引用数据类型 327
13.1.3  垃圾回收 328
13.2  释放非托管的资源 330
13.2.1  析构函数 330
13.2.2  IDisposable接口 331
13.2.3  实现IDisposable接口
和析构函数 332
13.3  不安全的代码 334
13.3.1  用指针直接访问内存 334
13.3.2  指针示例:
PointerPlayground 343
13.3.3  使用指针优化性能 347
13.4  小结 350
第14章  反射 351
14.1  自定义特性 351
14.1.1  编写自定义特性 352
14.1.2  自定义特性示例:
WhatsNewAttributes 355
14.2  反射 358
14.2.1  System.Type类 358
14.2.2  TypeView示例 360
14.2.3  Assembly类 362
14.2.4  完成WhatsNew
Attributes示例 364
14.3  小结 368
第15章  错误和异常 369
15.1  异常类 369
15.2  捕获异常 371
15.2.1  实现多个catch块 373
15.2.2  在其他代码中捕获异常 376
15.2.3  System.Exception属性 376
15.2.4  没有处理异常时所发生
的情况 377
15.2.5  嵌套的 try块 378
15.3  用户定义的异常类 379
15.3.1  捕获用户定义的异常 380
15.3.2  抛出用户定义的异常 382
15.3.3  定义用户定义的异常类 385
15.4  小结 387
第Ⅱ部分  Visual Studio
第16章  Visual Studio 2010 391
16.1  使用Visual Studio 2010 391
16.1.1  创建项目 395
16.1.2  解决方案和项目的区别 401
16.1.3  Windows应用程序代码 403
16.1.4  项目的浏览和编码 404
16.1.5  生成项目 411
16.1.6  调试代码 415
16.2  重构工具 418
16.3  面向多个版本的
.NET Framework 420
16.4  WPF、WCF、WF等 421
16.4.1  在Visual Studio 2010
中构建WPF应用程序 421
16.4.2  在Visual Studio 2010
中构建WF应用程序 423
16.5  小结 424
第17章  部署 425
17.1  部署的规划 425
17.1.1  部署选项 426
17.1.2  部署要求 426
17.1.3  部署.NET运行库 427
17.2  简单的部署选项 427
17.2.1  Xcopy部署 428
17.2.2  Xcopy和Web
应用程序 428
17.2.3  发布Web站点 429
17.3  Visual Studio 2010安装
和部署项目 429
17.3.1  Windows Installer 430
17.3.2  创建安装程序 430
17.4  ClickOnce 437
17.4.1  ClickOnce操作 437
17.4.2  发布ClickOnce
应用程序 438
17.4.3  ClickOnce设置 438
17.4.4  ClickOnce文件的
应用程序缓存 439
17.4.5  应用程序的安全性 439
17.5  Visual Studio 2010
高级选项 440
17.5.1  文件系统编辑器 440
17.5.2  注册表编辑器 440
17.5.3  文件类型编辑器 440
17.5.4  用户界面编辑器 441
17.5.5  自定义动作编辑器 442
17.5.6  Launch Conditions
编辑器 443
17.6  小结 444
第Ⅲ部分  基    础
第18章  程序集 447
18.1  程序集的含义 447
18.1.1  程序集的功能 448
18.1.2  程序集的结构 448
18.1.3  程序集清单 449
18.1.4  名称空间、程序集
和组件 449
18.1.5  私有程序集和共享
程序集 449
18.1.6  附属程序集 450
18.1.7  查看程序集 450
18.2  创建程序集 451
18.2.1  创建模块和程序集 451
18.2.2  程序集的特性 452
18.2.3  动态加载和创建
程序集 454
18.3  应用程序域 457
18.4  共享程序集 461
18.4.1  强名 462
18.4.2  使用强名获得完整性 462
18.4.3  全局程序集缓存 463
18.4.4  创建共享程序集 463
18.4.5  创建强名 464
18.4.6  安装共享程序集 465
18.4.7  使用共享程序集 465
18.4.8  程序集的延迟签名 466
18.4.9  引用 467
18.4.10  本机映像生成器 468
18.5  配置.NET应用程序 469
18.5.1  配置类别 469
18.5.2  绑定程序集 470
18.6  版本问题 471
18.6.1  版本号 472
18.6.2  通过编程方式获取版本 472
18.6.3  绑定到程序集版本 473
18.6.4  发行者策略文件 474
18.6.5  运行库的版本 475
18.7  小结 476
第19章  检测 477
19.1  代码协定 477
19.1.1  前提条件 479
19.1.2  后置条件 480
19.1.3  常量 481
19.1.4  接口的协定 481
19.2  跟踪 483
19.2.1  跟踪源 484
19.2.2  跟踪开关 485
19.2.3  跟踪侦听器 486
19.2.4  筛选器 488
19.2.5  相关性 489
19.3  事件日志 492
19.3.1  事件日志体系结构 493
19.3.2  事件日志类 494
19.3.3  创建事件源 494
19.3.4  写入事件日志 495
19.3.5  资源文件 496
19.4  性能监控 500
19.4.1  性能监控类 500
19.4.2  性能计数器生成器 500
19.4.3  添加Performance
Counter组件 503
19.4.4  perfmon.exe 505
19.5  小结 506
第20章  线程、任务和同步 507
20.1  概述 507
20.2  异步委托 508
20.2.1  投票 508
20.2.2  等待句柄 509
20.2.3  异步回调 510
20.3  Thread类 512
20.3.1  给线程传递数据 513
20.3.2  后台线程 514
20.3.3  线程的优先级 515
20.3.4  控制线程 515
20.4  线程池 516
20.5  任务 517
20.5.1  启动任务 517
20.5.2  连续的任务 518
20.5.3  任务层次结构 519
20.5.4  任务的结果 520
20.6  Parallel类 521
20.6.1  用Parallel.For()
方法循环 521
20.6.2  使用Parallel.ForEach()
方法循环 523
20.6.3  通过Parallel.Invoke()
方法调用多个方法 524
20.7  取消架构 524
20.7.1  Parallel.For()方法
的取消 524
20.7.2  任务的取消 526
20.8  线程问题 527
20.8.1  争用条件 527
20.8.2  死锁 530
20.9  同步 532
20.9.1  lock语句和线程安全 532
20.9.2  Interlocked类 538
20.9.3  Monitor类 539
20.9.4  SpinLock结构 540
20.9.5  WaitHandle基类 540
20.9.6  Mutex类 541
20.9.7  Semaphore类 542
20.9.8  Events类 544
20.9.9  Barrier类 547
20.9.10  ReaderWriterLockSlim
类 549
20.10  Timer类 552
20.11  基于事件的异步模式 554
20.11.1  BackgroundWorker
类 554
20.11.2  启用取消功能 557
20.11.3  启用进度功能 558
20.11.4  创建基于事件的异步
组件 559
20.12  小结 563
第21章  安全性 565
21.1  身份验证和授权 565
21.1.1  标识和Principal 565
21.1.2  角色 567
21.1.3  声明基于角色的安全性 567
21.1.4  客户端应用程序服务 568
21.2  加密 573
21.2.1  签名 575
21.2.2  交换密钥和安全传输 576
21.3  资源的访问控制 579
21.4  代码访问安全性 582
21.4.1  第2级安全透明性 582
21.4.2  权限 583
21.5  使用证书发布代码 588
21.6  小结 588
第22章  本地化 591
22.1  System.Globalization
名称空间 591
22.1.1  Unicode问题 592
22.1.2  区域性和区域 592
22.1.3  使用区域性 596
22.1.4  排序 600
22.2  资源 602
22.2.1  创建资源文件 602
22.2.2  资源文件生成器 602
22.2.3  ResourceWriter 603
22.2.4  使用资源文件 604
22.2.5  System.Resources
名称空间 607
22.3  使用Visual Studio的
Windows窗体本地化 607
22.3.1  通过编程方式修改
区域性 612
22.3.2  使用自定义资源文件 613
22.3.3  资源的自动回退 614
22.3.4  外包翻译 615
22.4  用ASP.NET本地化 615
22.5  用WPF本地化 617
22.5.1  用于WPF的.NET资源 618
22.5.2  XAML资源字典 619
22.6  自定义资源读取器 622
22.6.1  创建DatabaseResource
Reader类 623
22.6.2  创建DatabaseResource
Set类 625
22.6.3  创建DatabaseResource
Manager类 625
22.6.4  DatabaseResourceReader
的客户端应用程序 626
22.7  创建自定义区域性 626
22.8  小结 628
第23章  System.Transactions 629
23.1  概述 629
23.1.1  事务处理阶段 630
23.1.2  ACID属性 630
23.2  数据库和实体类 631
23.3  传统的事务 633
23.3.1  ADO.NET事务 633
23.3.2  System.Enterprise
Services 634
23.4  System.Transactions 635
23.4.1  可提交的事务 636
23.4.2  事务处理的升级 638
23.4.3  依赖事务 640
23.4.4  环境事务 642
23.5  隔离级别 649
23.6  自定义资源管理器 650
23.7  Windows 7和Windows
Server 2008的事务 656
23.8  小结 660
第24章  网络 661
24.1  WebClient类 661
24.1.1  下载文件 662
24.1.2  基本的WebClient示例 662
24.1.3  上传文件 663
24.2  WebRequest类和
WebResponse类 664
24.2.1  身份验证 666
24.2.2  使用代理 666
24.2.3  异步页面请求 666
24.3  把输出结果显示为
HTML页面 667
24.3.1  从应用程序中进行
简单的Web浏览 667
24.3.2  启动Internet Explorer
实例 669
24.3.3  给应用程序提供更多
的IE类型特性 669
24.3.4  使用WebBrowser控件
打印 674
24.3.5  显示请求页面的代码 674
24.3.6  WebRequest类
和WebResponse类的
层次结构 676
24.4  实用工具类 676
24.4.1  URI 676
24.4.2  IP地址和DNS名称 677
24.5  较低层的协议 679
24.5.1  使用SmtpClient 680
24.5.2  使用TCP类 682
24.5.3  TcpSend和TcpReceive
示例 682
24.5.4  TCP和UDP 684
24.5.5  UDP类 684
24.5.6  Socket类 685
24.6  小结 689
第25章  Windows服务 691
25.1  Windows服务 691
25.2  Windows服务的体系结构 692
25.2.1  服务程序 692
25.2.2  服务控制程序 694
25.2.3  服务配置程序 694
25.2.4  Windows服务的类 694
25.3  创建Windows服务程序 694
25.3.1  创建服务的核心功能 695
25.3.2  QuoteClient示例 698
25.3.3  Windows服务程序 699
25.3.4  线程和服务 703
25.3.5  服务的安装 704
25.3.6  安装程序 704
25.4  服务的监视和控制 708
25.4.1  MMC管理单元 708
25.4.2  net.exe实用程序 709
25.4.3  sc.exe实用程序 710
25.4.4  Visual Studio Server
Explorer 710
25.4.5  编写自定义
ServiceController类 710
25.5  故障排除和事件日志 718
25.6  小结 719
第26章  互操作性 721
26.1  .NET和COM 721
26.1.1  元数据 722
26.1.2  释放内存 722
26.1.3  接口 722
26.1.4  方法的绑定 724
26.1.5  数据类型 724
26.1.6  注册 724
26.1.7  线程 725
26.1.8  错误处理 726
26.1.9  事件 727
26.2  编组 727
26.3  从.NET客户端中使用
COM组件 728
26.3.1  创建COM组件 728
26.3.2  创建RCW 734
26.3.3  使用RCW 735
26.3.4  使用COM服务器和
动态语言扩展 736
26.3.5  线程问题 737
26.3.6  添加连接点 737
26.4  从COM客户端中使用
.NET组件 739
26.4.1  CCM 740
26.4.2  创建.NET组件 740
26.4.3  创建类型库 741
26.4.4  COM互操作特性 743
26.4.5  COM注册 745
26.4.6  创建COM客户端
应用程序 746
26.4.7  添加连接点 747
26.4.8  用sink对象创建
客户端 748
26.5  平台调用 750
26.6  小结 754
第27章  核心XAML 755
27.1  概述 755
27.1.1  元素映射到.NET
对象上 756
27.1.2  使用自定义.NET类 757
27.1.3  把特性用作属性 759
27.1.4  把特性用作元素 759
27.1.5  基本的.NET类型 760
27.1.6  集合 760
27.1.7  构造函数 761
27.2  依赖属性 761
27.2.1  创建依赖类型 762
27.2.2  强制值回调 763
27.2.3  值变更回调和事件 764
27.2.4  事件的冒泡和隧道 764
27.3  附加属性 767
27.4  标记扩展 770
27.5  创建自定义标记扩展 770
27.6  XAML定义的标记扩展 772
27.7  读写XAML 772
27.8  小结 773
第28章  Managed Extensibility
Framework 775

28.1  MEF的体系结构 775
28.2  协定 782
28.3  导出 783
28.3.1  导出属性和方法 787
28.3.2  导出元数据 789
28.4  导入 791
28.5  容器和出口提供程序 794
28.6  类别 797
28.7  小结 798
第29章  文件和注册表操作 799
29.1  管理文件系统 799
29.1.1  表示文件和文件夹
的.NET类 800
29.1.2  Path类 803
29.1.3  FileProperties示例 803
29.2  移动、复制和删除文件 808
29.2.1  FilePropertiesAndMovement
示例 808
29.2.2  FilePropertiesAndMovement
示例的代码 809
29.3  读写文件 812
29.3.1  读取文件 812
29.3.2  写入文件 814
29.3.3  流 815
29.3.4  缓存的流 816
29.3.5  使用FileStream类读写
二进制文件 816
29.3.6  读写文本文件 821
29.4  映射内存的文件 827
29.5  读取驱动器信息 829
29.6  文件的安全性 831
29.6.1  从文件中读取ACL 831
29.6.2  从目录中读取ACL 832
29.6.3  添加和删除文件中
的ACL项 833
29.7  读写注册表 835
29.7.1  注册表 835
29.7.2  .NET注册表类 837
29.8  读写独立存储器 839
29.9  小结 844
第Ⅳ部分  数    据
第30章  核心ADO.NET 847
30.1  ADO.NET概述 847
30.1.1  名称空间 848
30.1.2  共享类 848
30.1.3  数据库专用的类 849
30.2  使用数据库连接 850
30.2.1  管理连接字符串 851
30.2.2  高效地使用连接 852
30.2.3  事务 854
30.3  命令 855
30.3.1  执行命令 856
30.3.2  调用存储过程 860
30.4  快速数据访问:
数据读取器 862
30.5  管理数据和关系:
DataSet类 865
30.5.1  数据表 866
30.5.2  数据列 866
30.5.3  数据关系 871
30.5.4  数据约束 872
30.6  XML架构:用XSD
生成代码 875
30.7  填充DataSet类 881
30.7.1  用数据适配器填充
DataSet 882
30.7.2  从XML中填充
DataSet类 883
30.8  持久化DataSet类的修改 883
30.8.1  通过数据适配器进行
更新 883
30.8.2  写入XML输出结果 886
30.9  使用ADO.NET 887
30.9.1  分层开发 887
30.9.2  生成SQL Server的键 888
30.9.3  命名约定 891
30.10  小结 892
第31章  ADO.NET Entity
Framework 893

31.1  ADO.NET Entity
Framework概述 893
31.2  Entity Framework映射 894
31.2.1  逻辑层 895
31.2.2  概念层 897
31.2.3  映射层 898
31.3  Entity Client 899
31.3.1  连接字符串 900
31.3.2  Entity SQL 900
31.4  实体 901
31.5  对象上下文 904
31.6  关系 906
31.6.1  一个层次结构一个表 907
31.6.2  一种类型一个表 908
31.6.3  懒惰加载、延迟加载
和预先加载 909
31.7  对象查询 910
31.8  更新 913
31.8.1  对象跟踪 913
31.8.2  改变信息 914
31.8.3  附加和分离实体 916
31.8.4  存储实体的变化 916
31.9  LINQ to Entities 917
31.10  小结 918
第32章  数据服务 919
32.1  概述 919
32.2  包含CLR对象的自定义
宿主 920
32.2.1  CLR对象 920
32.2.2  数据模型 922
32.2.3  数据服务 923
32.2.4  驻留服务 923
32.2.5  其他服务操作 924
32.3  HTTP客户端应用程序 925
32.4  使用WCF数据服务和
ADO.NET Entity
Framework 929
32.4.1  ASP.NET宿主和EDM 929
32.4.2  使用System.Data
.Service.Client的.NET
应用程序 931
32.5  小结 938
第33章  处理XML 939
33.1  .NET支持的XML标准 940
33.2  System.Xml名称空间 940
33.3  使用System.Xml类 941
33.4  读写流格式的XML 942
33.4.1  使用 XmlReader类 942
33.4.2  使用XmlReader类进行
验证 946
33.4.3  使用XmlWriter类 947
33.5  在.NET中使用DOM 949
33.6  使用XpathNavigator类 954
33.6.1  System.Xml.Xpath
名称空间 954
33.6.2  System.Xml.Xsl
名称空间 959
33.6.3  调试XSLT 963
33.7  XML和ADO.NET 965
33.7.1  将ADO.NET数据
转换为XML文档 965
33.7.2  把XML文档转换为
ADO.NET数据 970
33.8  在XML中序列化对象 972
33.9  LINQ to XML和.NET 982
33.10  使用不同的XML对象 982
33.10.1  XDocument对象 982
33.10.2  XElement对象 983
33.10.3  XNamespace对象 984
33.10.4  XComment对象 986
33.10.5  XAttribute对象 986
33.11  使用LINQ查询XML
文档 987
33.11.1  查询静态的XML
文档 987
33.11.2  查询动态的XML
文档 989
33.12  XML文档的更多查询
技术 990
33.12.1  读取XML文档 990
33.12.2  写入XML文档 992
33.13  小结 993
第34章  .NET编程和SQL
Server 995
34.1  .NET运行库的宿主 995
34.2  Microsoft.SqlServer.Server 997
34.3  用户定义的类型 998
34.3.1  创建UDT 998
34.3.2  通过SQL使用UDT 1003
34.3.3  从客户端代码中使用
UDT 1004
34.4  用户定义的聚合函数 1005
34.4.1  创建用户定义的
聚合函数 1006
34.4.2  使用用户定义的
聚合函数 1007
34.5  存储过程 1007
34.5.1  创建存储过程 1008
34.5.2  使用存储过程 1009
34.6  用户定义的函数 1010
34.6.1  创建用户定义的函数 1010
34.6.2  使用用户定义的函数 1010
34.7  触发器 1011
34.7.1  创建触发器 1011
34.7.2  使用触发器 1012
34.8  XML数据类型 1013
34.8.1  包含XML数据的表 1013
34.8.2  读取XML值 1014
34.8.3  数据的查询 1017
34.8.4  XML数据修改语言
(XML DML) 1019
34.8.5  XML索引 1020
34.8.6  强类型化的XML 1021
34.9  小结 1022
第Ⅴ部分  显    示
第35章  核心WPF 1025
35.1  概述 1025
35.1.1  名称空间 1025
35.1.2  类层次结构 1027
35.2  形状 1028
35.3  几何图形 1030
35.4  变换 1032
35.5  画笔 1033
35.5.1  SolidColorBrush 1033
35.5.2  LinearGradientBrush 1034
35.5.3  RadialGradientBrush 1034
35.5.4  DrawingBrush 1035
35.5.5  ImageBrush 1035
35.5.6  VisualBrush 1036
35.6  控件 1037
35.6.1  简单控件 1037
35.6.2  内容控件 1038
35.6.3  带标题的内容控件 1039
35.6.4  项控件 1040
35.6.5  带标题的项控件 1041
35.6.6  修饰 1041
35.7  布局 1042
35.7.1  StackPanel 1042
35.7.2  WrapPanel 1043
35.7.3  Canvas 1044
35.7.4  DockPanel 1044
35.7.5  Grid 1045
35.8  样式和资源 1046
35.8.1  样式 1046
35.8.2  资源 1048
35.8.3  系统资源 1049
35.8.4  从代码中访问资源 1050
35.8.5  动态资源 1050
35.8.6  资源字典 1051
35.9  触发器 1052
35.9.1  属性触发器 1053
35.9.2  多触发器 1054
35.9.3  数据触发器 1055
35.10  模板 1056
35.10.1  控件模板 1057
35.10.2  数据模板 1060
35.10.3  样式化列表框 1061
35.10.4  ItemTemplate 1062
35.10.5  列表框元素的控件
模板 1064
35.11  动画 1066
35.11.1  时间轴 1066
35.11.2  非线性动画 1069
35.11.3  事件触发器 1069
35.11.4  关键帧动画 1072
35.12  可见状态管理器 1073
35.13  3-D 1076
35.13.1  模型 1077
35.13.2  照相机 1079
35.13.3  光线 1079
35.13.4  旋转 1079
35.14  小结 1080
第36章  用WPF编写业务
应用程序 1083

36.1  数据绑定 1083
36.1.1  BooksDemo应用程序 1084
36.1.2  用XAML绑定 1086
36.1.3  简单对象的绑定 1088
36.1.4  更改通知 1090
36.1.5  对象数据提供程序 1092
36.1.6  列表绑定 1094
36.1.7  主从绑定 1096
36.1.8  多绑定 1097
36.1.9  优先绑定 1099
36.1.10  值的转换 1100
36.1.11  动态添加列表项 1102
36.1.12  数据模板选择器 1103
36.1.13  绑定到XML上 1105
36.1.14  绑定的验证 1107
36.2  Commanding 1111
36.2.1  定义命令 1112
36.2.2  定义命令源 1113
36.2.3  命令绑定 1113
36.3  TreeView 1114
36.4  DataGrid 1118
36.4.1  自定义列 1120
36.4.2  行的细节 1121
36.4.3  用DataGrid进行分组 1121
36.5  小结 1124
第37章  用WPF创建文档 1125
37.1  文本元素 1125
37.1.1  字体 1125
37.1.2  TextEffect 1127
37.1.3  内联 1128
37.1.4  块 1130
37.1.5  列表 1132
37.1.6  表 1132
37.1.7  块的锚定 1134
37.2  流文档 1135
37.3  固定文档 1136
37.4  XPS文档 1140
37.5  打印 1141
37.5.1  用PrintDialog打印 1142
37.5.2  打印可见元素 1142
37.6  小结 1144
第38章  Silverlight 1145
38.1  WPF和Silverlight的比较 1145
38.2  创建Silverlight项目 1146
38.3  导航 1148
38.4  网络 1152
38.4.1  创建ADO.NET Entity
Data Model 1153
38.4.2  为Silverlight客户端
创建WCF服务 1153
38.4.3  调用WCF服务 1155
38.4.4  使用WCF数据服务 1158
38.4.5  使用System.Net访问
服务 1160
38.5  浏览器集成 1162
38.5.1  调用JavaScript 1162
38.5.2  JavaScript调用
Silverlight 1163
38.6  在浏览器外运行的
Silverlight应用程序 1164
38.7  小结 1167
第39章  Windows窗体 1169
39.1  创建Windows窗体
应用程序 1169
39.2  Control类 1175
39.2.1  大小和位置 1175
39.2.2  外观 1176
39.2.3  用户交互操作 1176
39.2.4  Windows功能 1177
39.2.5  其他功能 1177
39.3  标准控件和组件 1178
39.3.1  Button控件 1178
39.3.2  CheckBox控件 1178
39.3.3  RadioButton控件 1179
39.3.4  ComboBox控件、
ListBox控件和
CheckedListBox控件 1179
39.3.5  DataGridView控件 1180
39.3.6  DateTimePicker控件 1188
39.3.7  ErrorProvider组件 1188
39.3.8  ImageList组件 1189
39.3.9  Label控件 1189
39.3.10  ListView控件 1189
39.3.11  PictureBox控件 1189
39.3.12  ProgressBar控件 1190
39.3.13  TextBox控件、
RichTextBox控件与
MaskedTextBox控件 1190
39.3.14  Panel控件 1191
39.3.15  FlowLayoutPanel和
TableLayoutPanel
控件 1191
39.3.16  SplitContainer控件 1192
39.3.17  TabControl控件和
TabPages控件 1192
39.3.18  ToolStrip控件 1193
39.3.19  MenuStrip控件 1194
39.3.20  ContextMenuStrip
控件 1194
39.3.21  ToolStripMenuItem
控件 1194
39.3.22  ToolStripManager类 1194
39.3.23  ToolStripContainer
控件 1195
39.4  窗体 1195
39.4.1  Form类 1195
39.4.2  多文档界面 1199
39.4.3  创建自己的用户控件 1200
39.5  小结 1200
第40章  核心ASP.NET 1201
40.1  ASP.NET概述 1201
40.1.1  ASP.NET文件的
处理方式 1202
40.1.2  Web站点和Web
应用程序 1202
40.1.3  ASP.NET中的状态
管理 1203
40.2  ASP.NET Web窗体 1203
40.2.1  ASP.NET代码模型 1207
40.2.2  ASP.NET服务器控件 1208
40.3  ADO.NET和数据绑定 1222
40.3.1  更新事件登记
应用程序 1222
40.3.2  数据绑定的更多内容 1229
40.4  应用程序配置 1234
40.5  小结 1236
第41章  ASP.NET的功能 1237
41.1  用户控件和自定义控件 1238
41.1.1  用户控件 1238
41.1.2  PCSDemoSite中的
用户控件 1242
41.1.3  自定义控件 1243
41.2  母版页 1247
41.2.1  在Web页面中
访问母版页 1248
41.2.2  嵌套的母版页 1248
41.2.3  PCSDemoSite中
的母版页 1249
41.3  站点导航 1250
41.3.1  添加站点地图文件 1251
41.3.2  PCSDemoSite中
的导航 1252
41.4  安全性 1253
41.4.1  使用Security Setup
添加Forms身份验证
功能 1254
41.4.2  实现登录系统 1255
41.4.3  Web 登录服务器控件 1255
41.4.4  保护目录 1256
41.4.5  PCSDemoSite中的
安全性 1257
41.5  主题 1259
41.5.1  把主题应用于页面 1259
41.5.2  定义主题 1260
41.5.3  PCSDemoSite中的
主题 1260
41.6  Web部件 1263
41.6.1  Web部件应用程序
组件 1263
41.6.2  Web部件示例 1264
41.7  ASP.NET AJAX 1270
41.8  Ajax的概念 1271
41.9  ASP.NET AJAX 1273
41.9.1  核心功能 1273
41.9.2  ASP.NET AJAX
Control Toolkit 1275
41.10  ASP.NET AJAX网站
示例 1276
41.11  支持ASP.NET AJAX的
网站配置 1278
41.12  添加ASP.NET AJAX
功能 1279
41.12.1  ScriptManager控件 1280
41.12.2  使用UpdatePanel
控件 1281
41.12.3  使用UpdateProgress 1283
41.12.4  使用扩展控件 1284
41.13  使用AJAX库 1286
41.13.1  给Web页面添加
JavaScript 1286
41.13.2  全局实用程序函数 1287
41.13.3  使用AJAX库
JavaScript OOP
扩展 1287
41.13.4  PageRequestManager
对象和Application
对象 1289
41.13.5  JavaScript的调试 1292
41.13.6  异步调用Web方法 1293
41.13.7  ASP.NET应用程序
服务 1294
41.14  小结 1294
第42章  ASP.NET动态数据
和MVC 1297
42.1  路由 1298
42.1.1  查询字符串参数 1298
42.1.2  定义路由 1300
42.1.3  使用路由参数 1303
42.2  动态数据 1305
42.2.1  创建动态数据网站 1305
42.2.2  定制动态数据网站 1310
42.2.3  进一步开发 1314
42.3  MVC 1314
42.3.1  MVC的含义 1314
42.3.2  ASP.NET MVC的
含义 1315
42.3.3  简单的ASP.NET MVC
应用程序 1315
42.3.4  定制ASP.NET MVC
应用程序 1321
42.3.5  进一步开发 1329
42.4 小结 1330
第Ⅵ部分  通    信
第43章  WCF 1333
43.1  WCF概述 1333
43.1.1  SOAP 1335
43.1.2  WSDL 1335
43.1.3  REST 1335
43.1.4  JSON 1336
43.2  简单的服务和客户端 1336
43.2.1  服务协定 1337
43.2.2  服务的实现 1338
43.2.3  WCF服务宿主和
WCF测试客户端 1338
43.2.4  自定义服务宿主 1340
43.2.5  WCF客户端 1342
43.2.6  诊断 1343
43.3  协定 1345
43.3.1  数据协定 1345
43.3.2  版本问题 1346
43.3.3  服务协定 1346
43.3.4  消息协定 1347
43.4  服务的实现 1348
43.4.1  以编程方式创建
客户端 1351
43.4.2  错误处理 1352
43.5  绑定 1353
43.6  宿主 1356
43.6.1  自定义宿主 1356
43.6.2  WAS宿主 1357
43.6.3  预配置的宿主类 1357
43.7  客户端 1358
43.8  双工通信 1360
43.9  小结 1362
第44章  Windows WF 4 1363
44.1  Hello World示例 1363
44.2  活动 1365
44.2.1  If活动 1366
44.2.2  InvokeMethod活动 1367
44.2.3  Parallel活动 1367
44.2.4  Delay活动 1368
44.2.5  Pick活动 1368
44.3  自定义活动 1369
44.3.1  活动的验证 1370
44.3.2  设计器 1371
44.3.3  自定义复合活动 1373
44.4  工作流 1375
44.4.1  实参和变量 1376
44.4.2  WorkflowApplication 1377
44.4.3  WorkflowServiceHost 1381
44.4.4  驻留设计器 1386
44.5  小结 1391
第45章  对等网络 1393
45.1  P2P网络概述 1393
45.1.1  客户端-服务器体系
结构 1393
45.1.2  P2P体系结构 1394
45.1.3  P2P体系结构的挑战 1395
45.1.4  P2P术语 1396
45.1.5  P2P解决方案 1396
45.2  Microsoft Windows
Peer-to-Peer Networking 1396
45.2.1  PNRP 1396
45.2.2  People Near Me 1399
45.3  构建P2P应用程序 1400
45.3.1  System.Net.PeerToPeer 1400
45.3.2  System.Net.PeerToPeer
.Collaboration 1405
45.4  小结 1408
第46章  消息队列 1409
46.1  概述 1409
46.1.1  使用消息队列的场合 1410
46.1.2  消息队列功能 1411
46.2  Message Queuing产品 1412
46.3  消息队列体系结构 1412
46.3.1  消息 1413
46.3.2  消息队列 1413
46.4  Message Queuing
管理工具 1414
46.4.1  创建消息队列 1414
46.4.2  消息队列属性 1415
46.5  消息队列的编程实现 1415
46.5.1  创建消息队列 1415
46.5.2  查找队列 1416
46.5.3  打开已知队列 1417
46.5.4  发送消息 1418
46.5.5  接收消息 1421
46.6  课程订单应用程序 1423
46.6.1  课程订单类库 1423
46.6.2  课程订单消息
发送程序 1424
46.6.3  发送优先级和可恢复
的消息 1425
46.6.4  课程订单消息接收
程序 1426
46.7  接收结果 1429
46.7.1  确认队列 1430
46.7.2  响应队列 1430
46.8  事务队列 1431
46.9  消息队列和WCF 1432
46.9.1  带数据协定的实体类 1432
46.9.2  WCF服务协定 1433
46.9.3  WCF消息接收
应用程序 1434
46.9.4  WCF消息发送
应用程序 1437
46.10  消息队列的安装 1438
46.11  小结 1438
第47章  Syndication 1441
47.1  System.ServiceModel.
Syndication名称空间
概述 1441
47.2  读取联合源的示例 1442
47.3  联合源的示例 1444
47.4  小结 1449
第Ⅶ部分  附    录
附录A 1453

***以下内容见随书附赠光盘***
第48章  使用GDI+绘图 E1
48.1  理解绘图规则 E1
48.1.1  GDI和GDI+ E2
48.1.2  绘制图形 E3
48.1.3  使用OnPaint()方法
绘制图形 E6
48.1.4  使用剪切区域 E7
48.2  测量坐标和区域 E9
48.2.1  Point和PointF结构 E9
48.2.2  Size和SizeF结构 E10
48.2.3  Rectangle和RectangleF
结构 E11
48.2.4  Region E12
48.3  调试须知 E13
48.4  绘制可滚动的窗口 E14
48.5  世界、页面和设备坐标 E18
48.6  颜色 E19
48.6.1  RGB值 E19
48.6.2  命名颜色 E20
48.6.3  图形显示模式和安全
的调色板 E20
48.6.4  安全调色板 E21
48.7  画笔和钢笔 E21
48.7.1  画笔 E22
48.7.2  钢笔 E23
48.8  绘制图形和线条 E23
48.9  显示图像 E25
48.10  处理图像时的问题 E27
48.11  绘制文本 E28
48.12  简单的文本示例 E29
48.13  字体和字体系列 E30
48.14  示例:枚举字体系列 E31
48.15  编辑文本文档:
CapsEditor示例 E33
48.15.1  Invalidate()方法 E37
48.15.2  计算项的大小和文档
的大小 E38
48.15.3  OnPaint()方法 E39
48.15.4  坐标转换 E41
48.15.5  响应用户的输入 E42
48.16  打印 E45
48.17  小结 E50
第49章  VSTO E51
49.1  VSTO概述 E51
49.1.1  项目类型 E52
49.1.2  项目功能 E54
49.2  VSTO项目基础 E55
49.2.1  Office对象模型 E55
49.2.2  VSTO名称空间 E55
49.2.3  宿主项和宿主控件 E56
49.2.4  基本的VSTO项目
结构 E57
49.2.5  Globals类 E60
49.2.6  事件处理 E60
49.3  构建VSTO解决方案 E61
49.3.1  管理应用程序级插件 E62
49.3.2  与应用程序和文档
交互操作 E63
49.3.3  UI的自定义 E64
49.4  示例应用程序 E68
49.5  小结 E78
第50章  MAF E79
50.1  MAF体系结构 E79
50.1.1  管道 E80
50.1.2  发现 E81
50.1.3  激活和隔离 E82
50.1.4  协定 E83
50.1.5  生命周期 E84
50.1.6  版本问题 E85
50.2  插件示例 E86
50.2.1  插件协定 E86
50.2.2  计算器插件视图 E87
50.2.3  计算器插件适配器 E88
50.2.4  计算器插件 E90
50.2.5  计算器宿主视图 E91
50.2.6  计算机宿主适配器 E91
50.2.7  计算器宿主 E93
50.2.8  其他插件 E97
50.3  小结 E97
第51章  Enterprise Services E99
51.1  使用Enterprise Services E99
51.1.1  简史 E100
51.1.2  使用Enterprise Services
的场合 E100
51.1.3  重要功能 E101
51.2  创建简单的COM+应用
程序 E103
51.2.1  ServicedComponent类 E103
51.2.2  程序集的属性 E103
51.2.3  创建组件 E104
51.3  部署 E106
51.3.1  自动部署 E106
51.3.2  手工部署 E106
51.3.3  创建安装软件包 E106
51.4  组件服务管理器 E107
51.5  客户端应用程序 E108
51.6  事务 E109
51.6.1  事务的特性 E109
51.6.2  事务的结果 E110
51.7  示例应用程序 E111
51.7.1  实体类 E111
51.7.2  OrderControl组件 E113
51.7.3  OrderData组件 E114
51.7.4  OrderLineData组件 E116
51.7.5  客户端应用程序 E117
51.8  集成WCF和Enterprise
Services E118
51.8.1  WCF服务外观 E118
51.8.2  客户端应用程序 E122
51.9  小结 E123
第52章  目录服务 E125
52.1  Active Directory的
体系结构 E126
52.1.1  Active Directory的
功能 E126
52.1.2  Active Directory的
概念 E126
52.1.3  Active Directory数据
的特征 E129
52.1.4  指定架构 E130
52.2  Active Directory的
管理工具 E131
52.2.1  Active Directory Users
and Computers工具 E131
52.2.2  ADSI Edit工具 E132
52.3  Active Directory编程 E133
52.3.1  System.DirectoryServices
名称空间中的类 E134
52.3.2  绑定到Directory
Services E134
52.3.3  获取目录项 E138
52.3.4  对象集合 E140
52.3.5  缓存 E141
52.3.6  创建新对象 E141
52.3.7  更新目录项 E142
52.3.8  访问本地ADSI对象 E143
52.3.9  在Active Directory
中搜索 E144
52.4  搜索用户对象 E148
52.4.1  用户界面 E148
52.4.2  获取架构命名上下文 E149
52.4.3  获取User类的属性名 E149
52.4.4  搜索用户对象 E150
52.5  账户管理 E152
52.5.1  显示用户信息 E152
52.5.2  创建用户 E153
52.5.3  重置密码 E153
52.5.4  创建组 E154
52.5.5  在组中添加用户 E154
52.5.6  查找用户 E154
52.6  DSML E155
52.6.1  System.DirectoryServices.
Protocols名称空间中
的类 E156
52.6.2  用DSML搜索
Active Directory对象 E156
52.7  小结 E157
第53章  C#、Visual Basic、
C++/CLI和F# E159
53.1  名称空间 E160
53.2  定义类型 E161
53.2.1  引用类型 E161
53.2.2  值类型 E162
53.2.3  类型推断 E163
53.2.4  接口 E164
53.2.5  枚举 E165
53.3  方法 E166
53.3.1  方法的参数和返回
类型 E166
53.3.2  参数修饰符 E167
53.3.3  构造函数 E168
53.3.4  属性 E170
53.3.5  对象初始值设定项 E171
53.3.6  扩展方法 E171
53.4  静态成员 E172
53.5  数组 E173
53.6  控制语句 E174
53.6.1  if语句 E174
53.6.2  条件操作符 E174
53.6.3  switch语句 E175
53.7  循环 E176
53.7.1  for语句 E176
53.7.2  while和do…while
语句 E177
53.7.3  foreach语句 E178
53.8  异常处理 E178
53.9  继承 E180
53.9.1  访问修饰符 E180
53.9.2  关键字 E181
53.10  资源管理 E183
53.10.1  IDisposable接口的
实现 E183
53.10.2  using语句 E184
53.10.3  重写Finalize()方法 E184
53.11  委托 E186
53.12  事件 E188
53.13  泛型 E190
53.14  LINQ查询 E192
53.15  C++/CLI混合本地代码
和托管代码 E192
53.16  C#的特殊功能 E193
53.17  小结 E194
第54章  .NET Remoting E195
54.1  使用.NET Remoting的
原因 E195
54.2  .NET Remoting术语详解 E197
54.2.1  客户端通信 E198
54.2.2  服务器端通信 E199
54.3  上下文 E199
54.3.1  激活 E200
54.3.2  特性和属性 E200
54.3.3  上下文之间的通信 E201
54.4  远程对象、客户端和
服务器 E201
54.4.1  远程对象 E201
54.4.2  简单的服务器应用
程序 E202
54.4.3  简单的客户端应用
程序 E203
54.5  .NET Remoting体系结构 E204
54.5.1  信道 E204
54.5.2  格式化程序 E207
54.5.3  ChannelServices和
RemotingConfiguration E207
54.5.4  对象的激活 E209
54.5.5  消息接收器 E212
54.5.6  在远程方法中传递对象 E213
54.5.7  生命周期管理 E216
54.6  配置文件 E218
54.6.1  知名对象的服务器
配置 E220
54.6.2  知名对象的客户端
配置 E220
54.6.3  客户端激活的对象的
服务器配置 E221
54.6.4  客户端激活的对象的
客户端配置 E222
54.6.5  使用配置文件的
服务器代码 E222
54.6.6  使用配置文件的
客户端代码 E223
54.6.7  客户端信道的延迟
加载 E223
54.6.8  调试配置 E224
54.6.9  配置文件中的生命
周期服务 E224
54.6.10  格式化程序提供程序 E225
54.7  在ASP.NET中驻留远程
服务器 E225
54.8  类、接口和Soapsuds E227
54.8.1  接口 E227
54.8.2  Soapsuds E227
54.9  异步远程调用 E228
54.9.1  使用委托和
.NET Remoting E228
54.9.2  OneWay特性 E229
54.10  .NET Remoting的
安全性 E229
54.11  远程处理和事件 E230
54.11.1  远程对象 E231
54.11.2  事件参数 E232
54.11.3  服务器 E233
54.11.4  服务器配置文件 E233
54.11.5  事件接收器 E234
54.11.6  客户端 E234
54.11.7  客户端配置文件 E235
54.11.8  运行程序 E236
54.12  调用上下文 E236
54.13  小结 E237
第55章  Web服务和ASP.NET E239
55.1  SOAP E240
55.2  WSDL E241
55.3  Web服务 E242
55.3.1  提供Web服务 E242
55.3.2  使用Web服务 E246
55.4  扩充事件登记示例 E248
55.4.1  事件登记 Web服务 E249
55.4.2  事件登记客户端 E253
55.5  使用SOAP标题交换
数据 E256
55.6  小结 E261
第56章  LINQ to SQL E263
56.1  LINQ to SQL和
Visual Studio 2010 E264
56.1.1  调用Products表 E265
56.1.2  添加LINQ to SQL类 E265
56.1.3  O/R设计器概述 E266
56.1.4  创建Product对象 E267
56.2  对象如何映射到LINQ
对象上 E269
56.2.1  DataContext对象 E270
56.2.2  Table<TEntity>对象 E274
56.3  脱离O/R设计器工作 E274
56.3.1  创建自己的自定义
对象 E274
56.3.2  通过自定义对象和
LINQ查询 E275
56.3.3  通过查询限制所调用
的列 E276
56.3.4  使用列名 E277
56.3.5  创建自己的
DataContext对象 E278
56.4  自定义对象和O/R
设计器 E279
56.5  查询数据库 E280
56.5.1  使用查询表达式 E280
56.5.2  查询表达式 E281
56.5.3  使用表达式筛选 E282
56.5.4  执行连接 E282
56.5.5  分组项 E284
56.6  存储过程 E285
56.7  小结 E286
第57章  WPF 3.0 E287
57.1  Hello World示例 E287
57.2  活动 E288
57.2.1  IfElseActivity E289
57.2.2  ParallelActivity E290
57.2.3  CallExternalMethod
Activity E291
57.2.4  DelayActivity E291
57.2.5  ListenActivity E292
57.2.6  活动执行模型 E293
57.3  自定义活动 E293
57.3.1  活动的验证 E295
57.3.2  主题和设计器 E296
57.3.3  ActivityToolboxItem
和图标 E297
57.3.4  自定义复合活动 E299
57.4  工作流 E305
57.4.1  顺序工作流 E305
57.4.2  状态机工作流 E305
57.4.3  给工作流传递参数 E307
57.4.4  从工作流中返回结果 E308
57.4.5  将参数绑定到活动上 E309
57.5  工作流运行库 E310
57.6  工作流服务 E310
57.6.1  持久性服务 E312
57.6.2  跟踪服务 E313
57.6.3  自定义服务 E315
57.7  与WCF集成 E316
57.8  驻留工作流 E318
57.9  工作流设计器 E319
57.10  从WF 3.X迁移到WF 4 E320
57.10.1  把活动代码提取到
服务中 E320
57.10.2  删除代码活动 E320
57.10.3  同时运行WF 3.x
和4 E321
57.10.4  考虑把状态机迁移到
流程图上 E321
57.11  小结 E321

第1章 窗体与界面设计 11.1 菜单应用实例 2实例001 带历史信息的菜单 2实例002 菜单动态合并 3实例003 像开始菜单一样漂亮的菜单 4实例004 任务栏托盘菜单 5实例005 可以拉伸的菜单界面 5实例006 菜级联菜单 71.2 工具栏设计 7实例007 带背景的工具栏 7实例008 浮动工具栏 8实例009 带下拉菜单的工具栏 9实例010 具有提示功能的工具栏 91.3 状态栏设计 10实例011 在状态栏中显示检查框 10实例012 带进度条的状态栏 11实例013 状态栏中加入图标 121.4 导航菜单界面 12实例014 OutLook界面 12实例015 带导航菜单的主界面 14实例016 图形化的导航界面 151.5 特色程序界面 17实例017 类QQ的程序界面 17实例018 类似Windows Xp的程序界面 18实例019 以图形按钮显示的界面 20实例020 以树形显示的程序界面 21实例021 动态按钮的窗体界面 221.6 特殊形状的窗体 24实例022 非矩形窗体 24实例023 建立字体形状窗体 25实例024 控件随窗体自动调整 26实例025 带分隔栏的窗体 27实例026 随机更换主界面背景 271.7 多媒体光盘 28实例027 自动启动的多媒体光盘程序 28实例028 为触摸屏程序添加虚拟键盘 291.8 窗体效果 30实例029 半透明渐显窗体 31实例030 窗口颜色的渐变 321.9 窗体动画 33实例031 窗体中的滚动字幕 33实例032 动画显示窗体 34实例033 制作闪烁的窗体 35实例034 直接在窗体上绘图 37实例035 动画形式的程序界面 381.10 标题栏窗体 39实例036 使窗体标题栏文字右对齐 39实例037 没有标题栏但可以改变大小的窗口 391.11 设置窗体位置 40实例038 设置窗体在屏幕中的位置 40实例039 始终在最上面的窗体 411.12 设置窗体大小 42实例040 限制窗体大小 42实例041 获取桌面大小 42实例042 在窗口间移动按钮 43实例043 如何实现Office助手 441.13 窗体控制技术 45实例044 在关闭窗口前加入确认对话框 45实例045 使用任意组件拖动窗体 46实例046 修改提示字体及颜色 471.14 其他技术 48实例047 如何为MDI类型窗体设置背景图片 48实例048 向提示框中添加图标 49第2章 控件应用 512.1 TextBox控件应用 52实例049 只允许输入数字的TextBox控件 52实例050 限制用户名称长度及设置密码文本 54实例051 自动删除非法字符 55实例052 为TextBox控件添加列表选择框 572.2 Button控件应用 58实例053 在Button按钮中显示图标 582.3 ComboBox控件应用 59实例054 将数据表中的字段添加到ComboBox控件 59实例055 带查询功能的ComboBox控件 612.4 RichTextBox控件应用 63实例056 利用RichTextBox控件实现文档管理功能 63实例057 利用RichTextBox控件实现文字定位与标识 65实例058 用RichTextBox控件显示图文数据 672.5 ListBox控件应用 68实例059 在ListBox控件间交换数据 68实例060 将数据库数据添加到组合框中 70实例061 借助绑定控件实现数据选择录入 71实例062  ListBox拒绝添加重复信息 722.6 选择类控件应用 73实例063 利用选择控件实现权限设置 74实例064 利用选择控件实现复杂查询 762.7 ListView控件应用 78实例065  ListView列表拒绝添加重复信息 78实例066 将数据库数据添加到ListView控件 80实例067 用ListView控件制作导航界面 81实例068 在ListView控件中对数据排序或统计 83实例069 在ListView控件中绘制底纹 84实例070 在列表视图中拖动视图项 85实例071 用ListView控件选取整行数据 88实例072 用ListView控件开发登录界面 892.8 TreeView控件应用 91实例073 将数据库数据显示到树视图中 91实例074 用TreeView控件制作导航界面 93实例075 用TreeView控件遍历磁盘目录 94实例076 TreeView控件在数据库中的应用 96实例077 带复选框的树状菜单 982.9 其他控件典型应用 100实例078 TrackBar的简单应用 100实例079 SplitContainer的应用 102实例080 MaskedTextBox控件的简单应用 103实例081 制作日历计划任务 105实例082 ImageAnimator类显示动画图片 108实例083 QQ头像列表 1102.10 控件技术 112实例084 程序运行时智能增减控件 112实例085 控制焦点移动 114实例086 动态创建控件 115实例087 在Button按钮上绘图 1162.11 焦点变换与输入控制 117实例088 按回车键焦点在控件中移动的录入窗口 117实例089 程序运行时拖动控件 119实例090 控件得到焦点时变色 120实例091 控件的输入限制 1212.12 特殊控件 122实例092 为控件制作立体效果 122实例093 获取控件名称和内容 124第3章 组件应用 1273.1 BackgroundWorker组件 128实例094  BackgroundWorker组件执行异步操作 1283.2 ErrorProvider组件 130实例095 使用ErrorProvider组件验证文本框输入 130实例096 利用ErrorProvider组件查看数据集中的错误 1323.3 EventLog组件 134实例097 使用EventLog组件读写Windows系统事件日志 134实例098 使用EventLog组件保存Windows系统日志 136实例099 使用EventLog组件向本机现有日志中添加条目 1383.4 FileSystemWatcher组件 140实例100 使用FileSystemWatcher组件监视系统日志文件是否被更改 1403.5 HelpProvider组件 142实例101 使用HelpProvider组件调用帮助文件 1423.6 Process组件 143实例102 使用Process组件访问本地进程 1433.7 Timer组件 145实例103 使用Timer组件制作计时器 145实例104 使用Timer组件显示当前系统时间 150实例105 使用Timer组件制作左右飘动的窗体 151实例106 使用Timer组件实现奥运倒计时 1523.8 ServiceController组件 154实例107 使用ServiceController组件控制计算机的服务 1543.9 ImageList组件 156实例108 使用ImageList组件制作动画图片 1563.10 DirectoryEntry组件 157实例109 使用DirectoryEntry组件建立虚拟目录 158第4章 图形技术 1614.1 绘制图形 162实例110 基本图形绘制 162实例111 在图片中写入文字 163实例112 局部图片的复制 165实例113 波形图的绘制 1664.2 图形转换 168实例114 BMP转换成JPG格式 168实例115 JPG转换成BMP格式 170实例116 位图转化为WMF 171实例117 Ico文件转化为位图 172实例118 图片批量转换工具 1734.3 图像预览 175实例119 局部图像放大 175实例120 浏览大图片 177实例121 剪切图片 178实例122 图像旋转 181实例123 鼠标拖拽图像 1824.4 图形缩放与变换 183实例124 如何放大和缩小图像 183实例125 如何旋转JPG图像 184实例126 如何实现图形翻转 1854.5 图像效果 186实例127 百叶窗效果显示图像 186实例128 推拉效果显示图像 187实例129 水平交错效果显示图像 188实例130 垂直交错效果显示图像 190实例131 图像纹理效果 191实例132 图像浮雕效果 193实例133 积木效果 194实例134 马赛克效果显示图像 1954.6 图像字体 197实例135 旋转的文字 197实例136 当前系统字体列表 198实例137 空心文字 199实例138 如何在图片上平滑移动文字 2014.7 图像动画 202实例139 动画背景窗体 202实例140 随鼠标移动的图像 203实例141 十字光标定位 204实例142 抓取鼠标形状 2064.8 图像识别 207实例143 查看图片的像素 207实例144 获取指定点的RGB值 2074.9 图像工具 208实例145 获取图片类型 208实例146 简单画图程序 209实例147 看图工具 213实例148 文字保存为图片 2154.10 图像应用 215实例149 随机更换壁纸程序 216实例150 屏幕保护 217实例151 模拟石英钟 219实例152 生肖速查 221第5章 多媒体技术 2255.1 CD、VCD播放 226实例153 播放指定的avi-mid-wav文件 226实例154 获取多媒体详细信息列表 2275.2 MP3、WAV播放 228实例155 带记忆功能的MP3播放器 228实例156 自动播放的MP3播放器 231实例157 学校体操定时音乐播放 2335.3 动画播放 234实例158 播放Flash动画 234实例159 制作AVI播放器 236实例160 播放Gif动画 237实例161 利用Image制作小动画 2395.4 媒体控制 240实例162 检测是否安装声卡 240实例163 打开和关闭CDROM 241实例164 控制PC喇叭发声 2425.5 多媒体应用 243实例165 开机祝福程序 243实例166 制作家庭影集 245实例167 产品电子报价 246实例168 产品滚动展示程序 248实例169 将图片资源添加到EXE里 2495.6 屏幕保护相关程序 250实例170 电子相册屏幕保护程序 250实例171 歌曲播放屏幕保护程序 251第6章 文件系统 2536.1 创建和删除文件 254实例172 创建和删除文件夹 254实例173 建立临时文件 255实例174 根据日期动态建立文件 256实例175 清空回收站 2576.2 查找文件 258实例176 搜索文件 259实例177 检查文件是否存在 260实例178 提取指定文件夹目录 2616.3 修改文件 261实例179 更改文件名称 262实例180 修改文件属性 262实例181 修改文件及目录的名字 2646.4 文件目录 265实例182 获得临时文件目录 265实例183 获取应用程序所在目录 266实例184 得到系统当前目录 266实例185 在程序中改变当前路径 2676.5 复制文件 268实例186 移动正在使用的文件 268实例187 批量复制文件 2696.6 指定类型的文件操作 270实例188 文本文件的操作 270实例189 简单的文件加密解密 2716.7 其他 273实例190 获取窗口文本 273实例191 判断文件是否正在被使用 274实例192 在程序中调用.HLP文件 275实例193  C#中实现文件拖放 276实例194 文件比较 276第7章 操作系统与Windows相关程序 2797.1 启动相关 280实例195 进入Windows前发出警告 280实例196 实现注销、关闭和重启计算机 2817.2 获得磁盘属性 284实例197 获得硬盘序列号 284实例198 获取映射驱动器路径 286实例199 判断驱动器类型 2877.3 磁盘相关设置 288实例200 取消磁盘共享 288实例201 检查驱动器容量 289实例202 检测磁盘是否准备好 290实例203 图表显示磁盘容量 291实例204 格式化磁盘 2937.4 系统控制 294实例205 怎样隐藏鼠标 294实例206 允许和禁止用户关机 295实例207 锁定计算机 2967.5 系统设置 297实例208 设置系统输入法 297实例209 设置桌面颜色 298实例210 鼠标交换左右键 2997.6 系统监控 299实例211 检测系统启动模式 300实例212 内存使用状态监控 301实例213 监视剪贴板内容 3027.7 系统软件信息 303实例214 获取用户名 303实例215 获取系统目录 305实例216 注册系统热键 306实例217 获取和修改BIOS计算机名 3077.8 鼠标操作 308实例218 动画鼠标 309实例219 限制鼠标活动区域 310实例220 获取鼠标在任意点的位置 311实例221 判断键盘按下的键值 3117.9 程序控制 312实例222 打开控制面板中的程序 313实例223 添加程序托盘 314实例224 不出现在任务栏上的程序 314实例225 怎样调用外部的Exe文件 315实例226 关闭外部已开启的程序 3167.10 程序运行 317实例227 防止程序多次运行 317实例228 开机后程序自动运行 319实例229 获取任务栏尺寸大小 320实例230 改变系统提示信息 321实例231 获取系统环境变量 322实例232 启动屏幕保护 3237.11 系统隐藏 324实例233 隐藏、显示任务栏 324实例234 隐藏、显示开始按钮 325实例235 查看当前系统本 326实例236 使桌面图标文字透明 328实例237 检索系统中正在运行的任务 329实例238 列出系统中的打印机 3307.12 其他 332实例239 两种信息发送方式 332实例240 功能快捷键 336第8章 注册表 3398.1 操作注册表 340实例241 怎样存取注册表信息 340实例242 注册表保存注册信息 341实例243 设置“显示 属性”窗体 342实例244 列出注册表指定项下全部键值 3438.2 系 统 设 置 344实例245 隐藏、显示桌面图标 345实例246 隐藏驱动器 345实例247 禁用运行注册表 3478.3 IE浏览器设置 348实例248 修改IE浏览器标题栏内容 348实例249 隐藏IE浏览器的右键关联菜单 349实例250 设置IE浏览器的默认主页 350实例251 禁止修改IE浏览器主页 3518.4 应用软件设置 352实例252 设置Word 2000文档及图片的保存路径 352实例253 限制软件使用次数 353第9章 数据库技术 3559.1 连接Access数据库 356实例254 连接Access数据库 356实例255 连接加密的Access数据库 357实例256 自动识别Access 2000数据库路径 358实例257 连接网络上共享的Access 2000数据库 3609.2 连接SQL Server数据库 361实例258 使用ODBC DSN连接SQL Server数据库 361实例259 使用ODBC非DSN连接SQL Server数据库 364实例260 使用OLE DB连接SQL Server数据库 365实例261 建立SQL Server数据库连接 3669.3 连接其他数据库 367实例262 连接Excel 367实例263 连接Oracle数据库 3689.4 数据库结构的读取与修改 369实例264 读取SQL Server数据库结构 369实例265 修改SQL Server数据库结构 3729.5 数据录入 374实例266 利用数据绑定控件录入数据 374实例267 使用ADO.NET对象录入数据 376实例268 利用SQL语句录入数据 379实例269 利用存储过程录入数据 3809.6 图片存取技术 383实例270 使用存取文件名的方法存取图片 383实例271 使用ADO.NET对象向SQL Server数据库存入图片 3849.7 数据修改 387实例272 利用数据绑定控件修改数据 387实例273 利用数据对象修改数据 390实例274 利用SQL语句修改数据 391实例275 利用存储过程修改数据 3939.8 数据保存前判断 395实例276 判断输入数据是否符合要求 395实例277 通过存储过程实现自动编号 3989.9 数据删除 401实例278 删除表格中指定的记录 401实例279 利用SQL语句删除数据 4029.10 数据记录 403实例280 分页显示信息 403实例281 移动记录 4049.11 数据维护 406实例282 在C#中分离SQL Server数据库 406实例283 在C#中附加SQL Server数据库 407实例284 在C#中附加单文件SQL Server数据库 4099.12 数据备份恢复 410实例285 备份SQL Server数据库 410实例286 还原SQL Server数据库 4139.13 管理系统开发相关 415实例287 开启SQL Server数据库 415实例288 断开SQL Server数据库与其他应用程序的连接 417实例289 带图像列表的系统登录程序 419实例290 利用SQL语句执行外围命令 420实例291 系统初始化 421第10章 SQL查询相关技术 42510.1 SELECT子句 426实例292 查询特定列数据 426实例293 使用列别名 428实例294 在列上加入计算 430实例295 使用函数设置条件 43110.2 查询常量 432实例296 查询数字 433实例297 查询字符串 434实例298 查询日期数据 436实例299 查询逻辑型数据 437实例300 查询空数据 43810.3 查询变量 440实例301 利用变量查询字符串数据 440实例302 利用变量查询数值型数据 441实例303 利用变量查询日期型数据 44210.4 模式查询 444实例304 利用“_”通配符进行查询 444实例305 利用“%”通配符进行查询 445实例306 利用“[]”通配符进行查询 446实例307 利用“[^]”通配符进行查询 448实例308 复杂的模式查询 44910.5 TOP和PERCENT限制查询结果 450实例309 查询前10名数据 450实例310 取出数据统计结果的前10名数据 451实例311 查询销售量占前50%的图书信息 453实例312 查询库存数量占后20%的图书信息 45410.6 周期、日期查询 455实例313 查询指定日期的数据 455实例314 查询指定时间段的数据 457实例315 按月查询数据 45810.7 比较、逻辑、重复查询 460实例316 查询数据大于指定条件的数据 460实例317 NOT与谓词进行组合条件的查询 461实例318 查询时不显示重复记录 463实例319 列出数据中的重复记录和记录条数 46510.8 在查询中使用OR和AND运算符 466实例320 利用OR运算符进行查询 466实例321 利用AND运算符进行查询 467实例322 同时利用OR、AND运算符进行查询 46910.9 排序、分组统计 471实例323 数据分组统计(单列) 471实例324 在分组查询中使用ALL关键字 473实例325 在分组查询中使用CUBE运算符 475实例326 在分组查询中使用ROLLUP 477实例327 对数据进行降序查询 479实例328 对数据进行多条件排序 480实例329 对统计结果进行排序 482实例330 按仓库分组统计图书库存(多列) 483实例331 多表分组统计 484实例332 使用COMPUTE 485实例333 使用COMPUTE BY 48710.10 聚合函数 488实例334 利用聚合函数SUM对销售额进行汇总 488实例335 利用聚合函数AVG求某班学生的平均年龄 490实例336 利用聚合函数MIN求销售额、利润最少的商品 492实例337 利用聚合函数MAX求月销售额完成最多的员工 493实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 49610.11 多表查询(连接查询) 498实例340 利用FROM子句进行多表查询 498实例341 使用表别名 499实例342 合并多个结果集 50110.12 嵌套查询 503实例343 简单嵌套查询 503实例344 复杂嵌套查询 504实例345 嵌套查询在查询统计中的应用 50610.13 子查询 508实例346 用子查询做派生的表 508实例347 用子查询作表达式 510实例348 在Update语句中应用子查询 51110.14 联合语句Union 512实例349 使用联合查询 512实例350 多表联合查询 514实例351 对联合查询后的结果进行排序 51510.15 内联接查询 517实例352 简单内联接查询 517实例353 复杂内联接查询 518实例354 使用内联接选择一个表与另一个表中行相关的所有行 51910.16 外联接查询 520实例355 left outer join查询 521实例356 right outer join查询 522实例357 使用外联接进行多表联合查询 52310.17 利用IN进行查询 525实例358 用IN查询表中的记录信息 525实例359 使用IN引入子查询限定查询范围 52610.18 交叉表查询 527实例360 利用Trasform分析数据 527实例361 利用Trasform动态分析数据 529实例362 静态交叉表(SQLServer 2000) 531实例363 动态交叉表(SQLServer 2000) 53310.19 函数查询 535实例364 在查询语句中使用格式化函数 536实例365 在查询语句中使用字符串函数 537实例366 在查询中使用日期函数 53810.20 having语句应用 540实例367 利用having语句过滤分组数据 540实例368 having语句应用在多表查询中 54110.21 视图的应用 543实例369 在C#中应用视图 543实例370 获取数据库中的全部用户视图 544实例371 通过视图修改数据 54510.22 存储过程的应用 546实例372 C#应用存储过程 546实例373 应用存储过程添加数据 547实例374 应用存储过程修改数据 549实例375 应用存储过程删除数据 550实例376 C#应用查询存储过程 551实例377 获取数据库中全部的存储过程 552实例378 加密存储过程 55310.23 触发器的应用 555实例379 Insert触发器的应用 555实例380 Update触发器在系统日志中的应用 556实例381 触发器的嵌套使用 557实例382 获取数据库中的触发器 559第11章 报表与打印技术 56111.1 Windows组件打印 562实例383 打印窗体中的数据 562实例384 图形打印 56411.2 利用报表生成器设计报表 566实例385 利用报表专家设计并显示学生基本信息 566实例386 分组统计报表 569实例387 在水晶报表中添加图表 57111.3 水晶报表基本操作 574实例388 在水晶报表中使用Access数据库 575实例389 在水晶报表中使用SQL Server数据库 576实例390 订货总金额超过10万元显示“恭喜获奖”文字 577实例391 薪资大于或等于1万元使用蓝色字体标记 580实例392 筛选薪资大于2000元的男员工 582实例393 按类别分组统计图书库存 584实例394 按成绩总分降序排序 585实例395 部门销售量占公司总销售量的业绩百分比 58611.4 子报表的使用 588实例396 插入子报表 588实例397 编辑与重新导入子报表 589实例398 根据需要显示子报表 59111.5 调用Office进行打印 593实例399 利用Word打印员工报表 593实例400 利用Excel打印学生信息报表 595第12章 图表技术 59712.1 简单图表 598实例401 绘制坐标系 598实例402 绘制椭圆 599实例403 绘制矩形 601实例404 绘制曲线 60212.2 柱形图表 603实例405 将汇总数据利用图表分析 603实例406 柱形图表分析商品走势 605实例407 对排序数据进行分析 608实例408 利用控件实现柱形图分析 60912.3 折线图表 610实例409 利用图表分析产品销售走势 610实例410 利用图表分析彩票中奖情况 612实例411 多曲线数据分析 614实例412 网站人气指数曲线分析 61712.4 饼型图表 619实例413 利用饼型图分析公司男女比率 619实例414 利用饼型图分析产品市场占有率 620实例415 利用多饼型图分析企业人力资源情况 62112.5 图表技术的应用 623实例416 绘制验证码 623实例417 绘制不规则窗体 625第13章 硬件相关开发技术 62713.1 串口控制 628实例418 通过串口发送数据 628实例419 通过串口关闭对方计算机 63013.2 加密狗 631实例420 密码写入与读出加密狗 631实例421 使用加密狗进行身份验证 63413.3 IC卡应用 635实例422 向IC卡中写入数据 635实例423 读取IC卡中的数据 638实例424 利用IC卡制作考勤程序 63913.4 监控 641实例425 简易视频程序 641实例426 摄像头监控录像 644实例427 超市摄像头定时监控系统 64513.5 语音卡控制 647实例428 语音卡电话呼叫系统 647实例429 客户来电查询系统 652实例430 语音卡实现电话录音 65313.6 手机程序开发 655实例431 利用短信猫收发短信息 655实例432 利用短信远程关闭计算机 659实例433 短信息采集烟草销售数据 660实例434 “春晚”节目评比短信息互动平台 66313.7 其他程序 664实例435 条形码扫描器销售商品 664实例436 利用神龙卡制作练歌房程序 665第14章 网络开发技术 66914.1 计算机设置 670实例437 更改计算机名称 670实例438 通过计算机名获取IP地址 672实例439 通过IP地址获取主机名称 673实例440 修改本机IP地址 674实例441 得到本机MAC地址 677实例442 获得系统打开的端口和状态 678实例443 更改DNS地址 68014.2 远程控制 681实例444 远程控制计算机 682实例445 远程服务控制 68314.3 网络复制文件 686实例446 网络中的文件复制 68614.4 局域网管理 688实例447 在局域网内发送信息 688实例448 获取网络中所有工作组名称 690实例449 列出工作组中所有计算机 692实例450 获取网络中某台计算机的磁盘信息 693实例451 映射网络驱动器 69414.5 网络连接与通信 696实例452 编程实现Ping操作 69614.6 网络聊天室 698实例453 利用C#设计聊天程序 698实例454 编写网络聊天室 700第15章 Web编程 70315.1 浏览器应用 704实例455 制作自己的网络浏览软件 704实例456 XML数据库文档的浏览 70815.2 上网控制 710实例457 定时上Internet 710实例458 监测当前网络连接状态 71215.3 邮件管理 713实例459 收取电子邮件 713实例460 SMTP协议发送电子邮件 71715.4 网上信息提取 719实例461 提取并保存网页源码 719实例462 提取网页标题 722第16章 加密、安全与软件注册 72516.1 数据加密与解密 726实例463 数据加密技术 726实例464 文本文件加密与解密 727实例465 利用图片加密文件 73216.2 Access数据库安全 735实例466 如何编程修复Access数据库 735实例467 访问带验证模式的Sqlserver 2000数据库 73716.3 软件注册与加密 739实例468 利用INI文件对软件进行注册 739实例469 利用注册表设计软件注册程序 741实例470 利用网卡序列号设计软件注册程序 743实例471 根据cpu序列号、磁盘序列号设计软件注册程序 746第17章 数据结构与算法 74917.1 链表的实现 750实例472 单向链表的实现 75017.2 双向链表 755实例473 双向链表 75517.3 堆栈 760实例474 堆栈的实现 76017.4 队列 762实例475 队列的实现 76317.5 树的实现 764实例476 树的实现 76417.6 排序 769实例477 冒泡排序 769实例478 选择排序 770实例479 插入排序 771实例480 希尔排序 77217.7 常见算法的实际应用 773实例481 判断素数的算法 773实例482 加密和解密算法 774实例483 判断身份证是否合法 775实例484 判断IP地址是否合法的算法 777实例485 按要求生成指定位数编号 778实例486 身份证号从15位升到18位算法 779第18章 C#高级开发 78118.1 Windows服务开发 782实例487 将局域网聊天程序开发成Windows服务 78218.2 Remoting分布式开发 789实例488 运用Remoting实现文件传送 789实例489 大规模数据访问时缓解服务器压力 79618.3 COM+服务开发 802实例490 COM+服务实现银行转账系统 803实例491 COM+服务解决同时访问大量数据并发性 807第19章 实用工具 81319.1 数据库工具 814实例492 自动配置ODBC的程序 814实例493 制作SQL Server提取器 81719.2 个人工具 819实例494 个人通讯录 819实例495 电子名片盒 822实例496 个人日记本 823实例497 个人理财管理 82519.3 实用工具 827实例498 电话区号、邮编管理软件 827实例499 火车时刻查询软件 828实例500 网站网址导航程序 83219.4 其他工具 833实例501 人民币金额转换 834实例502 列举局域网SQL服务器 836实例503 整点报时程序 837实例504 红绿灯程序 839实例505 万年历 841实例506 彩票抽奖机 844实例507 电子相册 846第20章 程序打包 84920.1 最简单的程序打包 850实例508 最简单的程序打包 850实例509 将特定文件安装到指定文件夹中 85220.2 打包注册表信息 854实例510 打包注册表信息 854技术要点对应实例位置 857 第1章 窗体与界面设计 11.1 菜单应用实例 2实例001 带历史信息的菜单 2实例002 菜单动态合并 3实例003 像开始菜单一样漂亮的菜单 4实例004 任务栏托盘菜单 5实例005 可以拉伸的菜单界面 5实例006 菜级联菜单 71.2 工具栏设计 7实例007 带背景的工具栏 7实例008 浮动工具栏 8实例009 带下拉菜单的工具栏 9实例010 具有提示功能的工具栏 91.3 状态栏设计 10实例011 在状态栏中显示检查框 10实例012 带进度条的状态栏 11实例013 状态栏中加入图标 121.4 导航菜单界面 12实例014 OutLook界面 12实例015 带导航菜单的主界面 14实例016 图形化的导航界面 151.5 特色程序界面 17实例017 类QQ的程序界面 17实例018 类似Windows Xp的程序界面 18实例019 以图形按钮显示的界面 20实例020 以树形显示的程序界面 21实例021 动态按钮的窗体界面 221.6 特殊形状的窗体 24实例022 非矩形窗体 24实例023 建立字体形状窗体 25实例024 控件随窗体自动调整 26实例025 带分隔栏的窗体 27实例026 随机更换主界面背景 271.7 多媒体光盘 28实例027 自动启动的多媒体光盘程序 28实例028 为触摸屏程序添加虚拟键盘 291.8 窗体效果 30实例029 半透明渐显窗体 31实例030 窗口颜色的渐变 321.9 窗体动画 33实例031 窗体中的滚动字幕 33实例032 动画显示窗体 34实例033 制作闪烁的窗体 35实例034 直接在窗体上绘图 37实例035 动画形式的程序界面 381.10 标题栏窗体 39实例036 使窗体标题栏文字右对齐 39实例037 没有标题栏但可以改变大小的窗口 391.11 设置窗体位置 40实例038 设置窗体在屏幕中的位置 40实例039 始终在最上面的窗体 411.12 设置窗体大小 42实例040 限制窗体大小 42实例041 获取桌面大小 42实例042 在窗口间移动按钮 43实例043 如何实现Office助手 441.13 窗体控制技术 45实例044 在关闭窗口前加入确认对话框 45实例045 使用任意组件拖动窗体 46实例046 修改提示字体及颜色 471.14 其他技术 48实例047 如何为MDI类型窗体设置背景图片 48实例048 向提示框中添加图标 49第2章 控件应用 512.1 TextBox控件应用 52实例049 只允许输入数字的TextBox控件 52实例050 限制用户名称长度及设置密码文本 54实例051 自动删除非法字符 55实例052 为TextBox控件添加列表选择框 572.2 Button控件应用 58实例053 在Button按钮中显示图标 582.3 ComboBox控件应用 59实例054 将数据表中的字段添加到ComboBox控件 59实例055 带查询功能的ComboBox控件 612.4 RichTextBox控件应用 63实例056 利用RichTextBox控件实现文档管理功能 63实例057 利用RichTextBox控件实现文字定位与标识 65实例058 用RichTextBox控件显示图文数据 672.5 ListBox控件应用 68实例059 在ListBox控件间交换数据 68实例060 将数据库数据添加到组合框中 70实例061 借助绑定控件实现数据选择录入 71实例062  ListBox拒绝添加重复信息 722.6 选择类控件应用 73实例063 利用选择控件实现权限设置 74实例064 利用选择控件实现复杂查询 762.7 ListView控件应用 78实例065  ListView列表拒绝添加重复信息 78实例066 将数据库数据添加到ListView控件 80实例067 用ListView控件制作导航界面 81实例068 在ListView控件中对数据排序或统计 83实例069 在ListView控件中绘制底纹 84实例070 在列表视图中拖动视图项 85实例071 用ListView控件选取整行数据 88实例072 用ListView控件开发登录界面 892.8 TreeView控件应用 91实例073 将数据库数据显示到树视图中 91实例074 用TreeView控件制作导航界面 93实例075 用TreeView控件遍历磁盘目录 94实例076 TreeView控件在数据库中的应用 96实例077 带复选框的树状菜单 982.9 其他控件典型应用 100实例078 TrackBar的简单应用 100实例079 SplitContainer的应用 102实例080 MaskedTextBox控件的简单应用 103实例081 制作日历计划任务 105实例082 ImageAnimator类显示动画图片 108实例083 QQ头像列表 1102.10 控件技术 112实例084 程序运行时智能增减控件 112实例085 控制焦点移动 114实例086 动态创建控件 115实例087 在Button按钮上绘图 1162.11 焦点变换与输入控制 117实例088 按回车键焦点在控件中移动的录入窗口 117实例089 程序运行时拖动控件 119实例090 控件得到焦点时变色 120实例091 控件的输入限制 1212.12 特殊控件 122实例092 为控件制作立体效果 122实例093 获取控件名称和内容 124第3章 组件应用 1273.1 BackgroundWorker组件 128实例094  BackgroundWorker组件执行异步操作 1283.2 ErrorProvider组件 130实例095 使用ErrorProvider组件验证文本框输入 130实例096 利用ErrorProvider组件查看数据集中的错误 1323.3 EventLog组件 134实例097 使用EventLog组件读写Windows系统事件日志 134实例098 使用EventLog组件保存Windows系统日志 136实例099 使用EventLog组件向本机现有日志中添加条目 1383.4 FileSystemWatcher组件 140实例100 使用FileSystemWatcher组件监视系统日志文件是否被更改 1403.5 HelpProvider组件 142实例101 使用HelpProvider组件调用帮助文件 1423.6 Process组件 143实例102 使用Process组件访问本地进程 1433.7 Timer组件 145实例103 使用Timer组件制作计时器 145实例104 使用Timer组件显示当前系统时间 150实例105 使用Timer组件制作左右飘动的窗体 151实例106 使用Timer组件实现奥运倒计时 1523.8 ServiceController组件 154实例107 使用ServiceController组件控制计算机的服务 1543.9 ImageList组件 156实例108 使用ImageList组件制作动画图片 1563.10 DirectoryEntry组件 157实例109 使用DirectoryEntry组件建立虚拟目录 158第4章 图形技术 1614.1 绘制图形 162实例110 基本图形绘制 162实例111 在图片中写入文字 163实例112 局部图片的复制 165实例113 波形图的绘制 1664.2 图形转换 168实例114 BMP转换成JPG格式 168实例115 JPG转换成BMP格式 170实例116 位图转化为WMF 171实例117 Ico文件转化为位图 172实例118 图片批量转换工具 1734.3 图像预览 175实例119 局部图像放大 175实例120 浏览大图片 177实例121 剪切图片 178实例122 图像旋转 181实例123 鼠标拖拽图像 1824.4 图形缩放与变换 183实例124 如何放大和缩小图像 183实例125 如何旋转JPG图像 184实例126 如何实现图形翻转 1854.5 图像效果 186实例127 百叶窗效果显示图像 186实例128 推拉效果显示图像 187实例129 水平交错效果显示图像 188实例130 垂直交错效果显示图像 190实例131 图像纹理效果 191实例132 图像浮雕效果 193实例133 积木效果 194实例134 马赛克效果显示图像 1954.6 图像字体 197实例135 旋转的文字 197实例136 当前系统字体列表 198实例137 空心文字 199实例138 如何在图片上平滑移动文字 2014.7 图像动画 202实例139 动画背景窗体 202实例140 随鼠标移动的图像 203实例141 十字光标定位 204实例142 抓取鼠标形状 2064.8 图像识别 207实例143 查看图片的像素 207实例144 获取指定点的RGB值 2074.9 图像工具 208实例145 获取图片类型 208实例146 简单画图程序 209实例147 看图工具 213实例148 文字保存为图片 2154.10 图像应用 215实例149 随机更换壁纸程序 216实例150 屏幕保护 217实例151 模拟石英钟 219实例152 生肖速查 221第5章 多媒体技术 2255.1 CD、VCD播放 226实例153 播放指定的avi-mid-wav文件 226实例154 获取多媒体详细信息列表 2275.2 MP3、WAV播放 228实例155 带记忆功能的MP3播放器 228实例156 自动播放的MP3播放器 231实例157 学校体操定时音乐播放 2335.3 动画播放 234实例158 播放Flash动画 234实例159 制作AVI播放器 236实例160 播放Gif动画 237实例161 利用Image制作小动画 2395.4 媒体控制 240实例162 检测是否安装声卡 240实例163 打开和关闭CDROM 241实例164 控制PC喇叭发声 2425.5 多媒体应用 243实例165 开机祝福程序 243实例166 制作家庭影集 245实例167 产品电子报价 246实例168 产品滚动展示程序 248实例169 将图片资源添加到EXE里 2495.6 屏幕保护相关程序 250实例170 电子相册屏幕保护程序 250实例171 歌曲播放屏幕保护程序 251第6章 文件系统 2536.1 创建和删除文件 254实例172 创建和删除文件夹 254实例173 建立临时文件 255实例174 根据日期动态建立文件 256实例175 清空回收站 2576.2 查找文件 258实例176 搜索文件 259实例177 检查文件是否存在 260实例178 提取指定文件夹目录 2616.3 修改文件 261实例179 更改文件名称 262实例180 修改文件属性 262实例181 修改文件及目录的名字 2646.4 文件目录 265实例182 获得临时文件目录 265实例183 获取应用程序所在目录 266实例184 得到系统当前目录 266实例185 在程序中改变当前路径 2676.5 复制文件 268实例186 移动正在使用的文件 268实例187 批量复制文件 2696.6 指定类型的文件操作 270实例188 文本文件的操作 270实例189 简单的文件加密解密 2716.7 其他 273实例190 获取窗口文本 273实例191 判断文件是否正在被使用 274实例192 在程序中调用.HLP文件 275实例193  C#中实现文件拖放 276实例194 文件比较 276第7章 操作系统与Windows相关程序 2797.1 启动相关 280实例195 进入Windows前发出警告 280实例196 实现注销、关闭和重启计算机 2817.2 获得磁盘属性 284实例197 获得硬盘序列号 284实例198 获取映射驱动器路径 286实例199 判断驱动器类型 2877.3 磁盘相关设置 288实例200 取消磁盘共享 288实例201 检查驱动器容量 289实例202 检测磁盘是否准备好 290实例203 图表显示磁盘容量 291实例204 格式化磁盘 2937.4 系统控制 294实例205 怎样隐藏鼠标 294实例206 允许和禁止用户关机 295实例207 锁定计算机 2967.5 系统设置 297实例208 设置系统输入法 297实例209 设置桌面颜色 298实例210 鼠标交换左右键 2997.6 系统监控 299实例211 检测系统启动模式 300实例212 内存使用状态监控 301实例213 监视剪贴板内容 3027.7 系统软件信息 303实例214 获取用户名 303实例215 获取系统目录 305实例216 注册系统热键 306实例217 获取和修改BIOS计算机名 3077.8 鼠标操作 308实例218 动画鼠标 309实例219 限制鼠标活动区域 310实例220 获取鼠标在任意点的位置 311实例221 判断键盘按下的键值 3117.9 程序控制 312实例222 打开控制面板中的程序 313实例223 添加程序托盘 314实例224 不出现在任务栏上的程序 314实例225 怎样调用外部的Exe文件 315实例226 关闭外部已开启的程序 3167.10 程序运行 317实例227 防止程序多次运行 317实例228 开机后程序自动运行 319实例229 获取任务栏尺寸大小 320实例230 改变系统提示信息 321实例231 获取系统环境变量 322实例232 启动屏幕保护 3237.11 系统隐藏 324实例233 隐藏、显示任务栏 324实例234 隐藏、显示开始按钮 325实例235 查看当前系统本 326实例236 使桌面图标文字透明 328实例237 检索系统中正在运行的任务 329实例238 列出系统中的打印机 3307.12 其他 332实例239 两种信息发送方式 332实例240 功能快捷键 336第8章 注册表 3398.1 操作注册表 340实例241 怎样存取注册表信息 340实例242 注册表保存注册信息 341实例243 设置“显示 属性”窗体 342实例244 列出注册表指定项下全部键值 3438.2 系 统 设 置 344实例245 隐藏、显示桌面图标 345实例246 隐藏驱动器 345实例247 禁用运行注册表 3478.3 IE浏览器设置 348实例248 修改IE浏览器标题栏内容 348实例249 隐藏IE浏览器的右键关联菜单 349实例250 设置IE浏览器的默认主页 350实例251 禁止修改IE浏览器主页 3518.4 应用软件设置 352实例252 设置Word 2000文档及图片的保存路径 352实例253 限制软件使用次数 353第9章 数据库技术 3559.1 连接Access数据库 356实例254 连接Access数据库 356实例255 连接加密的Access数据库 357实例256 自动识别Access 2000数据库路径 358实例257 连接网络上共享的Access 2000数据库 3609.2 连接SQL Server数据库 361实例258 使用ODBC DSN连接SQL Server数据库 361实例259 使用ODBC非DSN连接SQL Server数据库 364实例260 使用OLE DB连接SQL Server数据库 365实例261 建立SQL Server数据库连接 3669.3 连接其他数据库 367实例262 连接Excel 367实例263 连接Oracle数据库 3689.4 数据库结构的读取与修改 369实例264 读取SQL Server数据库结构 369实例265 修改SQL Server数据库结构 3729.5 数据录入 374实例266 利用数据绑定控件录入数据 374实例267 使用ADO.NET对象录入数据 376实例268 利用SQL语句录入数据 379实例269 利用存储过程录入数据 3809.6 图片存取技术 383实例270 使用存取文件名的方法存取图片 383实例271 使用ADO.NET对象向SQL Server数据库存入图片 3849.7 数据修改 387实例272 利用数据绑定控件修改数据 387实例273 利用数据对象修改数据 390实例274 利用SQL语句修改数据 391实例275 利用存储过程修改数据 3939.8 数据保存前判断 395实例276 判断输入数据是否符合要求 395实例277 通过存储过程实现自动编号 3989.9 数据删除 401实例278 删除表格中指定的记录 401实例279 利用SQL语句删除数据 4029.10 数据记录 403实例280 分页显示信息 403实例281 移动记录 4049.11 数据维护 406实例282 在C#中分离SQL Server数据库 406实例283 在C#中附加SQL Server数据库 407实例284 在C#中附加单文件SQL Server数据库 4099.12 数据备份恢复 410实例285 备份SQL Server数据库 410实例286 还原SQL Server数据库 4139.13 管理系统开发相关 415实例287 开启SQL Server数据库 415实例288 断开SQL Server数据库与其他应用程序的连接 417实例289 带图像列表的系统登录程序 419实例290 利用SQL语句执行外围命令 420实例291 系统初始化 421第10章 SQL查询相关技术 42510.1 SELECT子句 426实例292 查询特定列数据 426实例293 使用列别名 428实例294 在列上加入计算 430实例295 使用函数设置条件 43110.2 查询常量 432实例296 查询数字 433实例297 查询字符串 434实例298 查询日期数据 436实例299 查询逻辑型数据 437实例300 查询空数据 43810.3 查询变量 440实例301 利用变量查询字符串数据 440实例302 利用变量查询数值型数据 441实例303 利用变量查询日期型数据 44210.4 模式查询 444实例304 利用“_”通配符进行查询 444实例305 利用“%”通配符进行查询 445实例306 利用“[]”通配符进行查询 446实例307 利用“[^]”通配符进行查询 448实例308 复杂的模式查询 44910.5 TOP和PERCENT限制查询结果 450实例309 查询前10名数据 450实例310 取出数据统计结果的前10名数据 451实例311 查询销售量占前50%的图书信息 453实例312 查询库存数量占后20%的图书信息 45410.6 周期、日期查询 455实例313 查询指定日期的数据 455实例314 查询指定时间段的数据 457实例315 按月查询数据 45810.7 比较、逻辑、重复查询 460实例316 查询数据大于指定条件的数据 460实例317 NOT与谓词进行组合条件的查询 461实例318 查询时不显示重复记录 463实例319 列出数据中的重复记录和记录条数 46510.8 在查询中使用OR和AND运算符 466实例320 利用OR运算符进行查询 466实例321 利用AND运算符进行查询 467实例322 同时利用OR、AND运算符进行查询 46910.9 排序、分组统计 471实例323 数据分组统计(单列) 471实例324 在分组查询中使用ALL关键字 473实例325 在分组查询中使用CUBE运算符 475实例326 在分组查询中使用ROLLUP 477实例327 对数据进行降序查询 479实例328 对数据进行多条件排序 480实例329 对统计结果进行排序 482实例330 按仓库分组统计图书库存(多列) 483实例331 多表分组统计 484实例332 使用COMPUTE 485实例333 使用COMPUTE BY 48710.10 聚合函数 488实例334 利用聚合函数SUM对销售额进行汇总 488实例335 利用聚合函数AVG求某班学生的平均年龄 490实例336 利用聚合函数MIN求销售额、利润最少的商品 492实例337 利用聚合函数MAX求月销售额完成最多的员工 493实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495实例339 利用聚合函数First或Last求数据表中第一条或最后一条记录 49610.11 多表查询(连接查询) 498实例340 利用FROM子句进行多表查询 498实例341 使用表别名 499实例342 合并多个结果集 50110.12 嵌套查询 503实例343 简单嵌套查询 503实例344 复杂嵌套查询 504实例345 嵌套查询在查询统计中的应用 50610.13 子查询 508实例346 用子查询做派生的表 508实例347 用子查询作表达式 510实例348 在Update语句中应用子查询 51110.14 联合语句Union 512实例349 使用联合查询 512实例350 多表联合查询 514实例351 对联合查询后的结果进行排序 51510.15 内联接查询 517实例352 简单内联接查询 517实例353 复杂内联接查询 518实例354 使用内联接选择一个表与另一个表中行相关的所有行 51910.16 外联接查询 520实例355 left outer join查询 521实例356 right outer join查询 522实例357 使用外联接进行多表联合查询 52310.17 利用IN进行查询 525实例358 用IN查询表中的记录信息 525实例359 使用IN引入子查询限定查询范围 52610.18 交叉表查询 527实例360 利用Trasform分析数据 527实例361 利用Trasform动态分析数据 529实例362 静态交叉表(SQLServer 2000) 531实例363 动态交叉表(SQLServer 2000) 53310.19 函数查询 535实例364 在查询语句中使用格式化函数 536实例365 在查询语句中使用字符串函数 537实例366 在查询中使用日期函数 53810.20 having语句应用 540实例367 利用having语句过滤分组数据 540实例368 having语句应用在多表查询中 54110.21 视图的应用 543实例369 在C#中应用视图 543实例370 获取数据库中的全部用户视图 544实例371 通过视图修改数据 54510.22 存储过程的应用 546实例372 C#应用存储过程 546实例373 应用存储过程添加数据 547实例374 应用存储过程修改数据 549实例375 应用存储过程删除数据 550实例376 C#应用查询存储过程 551实例377 获取数据库中全部的存储过程 552实例378 加密存储过程 55310.23 触发器的应用 555实例379 Insert触发器的应用 555实例380 Update触发器在系统日志中的应用 556实例381 触发器的嵌套使用 557实例382 获取数据库中的触发器 559第11章 报表与打印技术 56111.1 Windows组件打印 562实例383 打印窗体中的数据 562实例384 图形打印 56411.2 利用报表生成器设计报表 566实例385 利用报表专家设计并显示学生基本信息 566实例386 分组统计报表 569实例387 在水晶报表中添加图表 57111.3 水晶报表基本操作 574实例388 在水晶报表中使用Access数据库 575实例389 在水晶报表中使用SQL Server数据库 576实例390 订货总金额超过10万元显示“恭喜获奖”文字 577实例391 薪资大于或等于1万元使用蓝色字体标记 580实例392 筛选薪资大于2000元的男员工 582实例393 按类别分组统计图书库存 584实例394 按成绩总分降序排序 585实例395 部门销售量占公司总销售量的业绩百分比 58611.4 子报表的使用 588实例396 插入子报表 588实例397 编辑与重新导入子报表 589实例398 根据需要显示子报表 59111.5 调用Office进行打印 593实例399 利用Word打印员工报表 593实例400 利用Excel打印学生信息报表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值