第Ⅰ部分 C#语言 2
第1章 .NET体系结构 2
1.1 C#与.NET的关系 2
1.2公共语言运行库 3
1.2.1平台无关性 3
1.2.2提高性能 3
1.2.3语言的互操作性 4
1.3中间语言 5
1.3.1面向对象和接口的支持 6
1.3.2相异值类型和引用类型 6
1.3.3强数据类型 7
1.3.4通过异常处理错误 12
1.3.5特性的使用 13
1.4程序集 13
1.4.1私有程序集 14
1.4.2共享程序集 14
1.4.3反射 14
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使用Windows Presentation Foundation(WPF) 18
1.7.4 Windows控件 19
1.7.5 Windows服务 19
1.7.6 Windows Communication Foundation(WCF) 19
1.8 C#在.NET企业体系结构中的作用 19
1.9小结 21
第2章 C#基础 22
2.1引言 22
2.2第一个C#程序 23
2.2.1代码 23
2.2.2编译并运行程序 23
2.2.3详细介绍 24
2.3变量 26
2.3.1变量的初始化 26
2.3.2类型推断 27
2.3.3变量的作用域 28
2.3.4常量 30
2.4预定义数据类型 31
2.4.1值类型和引用类型 31
2.4.2 CTS类型 33
2.4.3预定义的值类型 33
2.4.4预定义的引用类型 36
2.5流控制 38
2.5.1条件语句 38
2.5.2循环 42
2.5.3跳转语句 45
2.6枚举 46
2.7数组 47
2.8命名空间 48
2.8.1 using语句 49
2.8.2命名空间的别名 50
2.9 Main()方法 51
2.9.1多个Main()方法 51
2.9.2给Main()方法传送参数 52
2.10有关编译C#文件的更多内容 53
2.11控制台I/O 54
2.12使用注释 56
2.12.1源文件中的内部注释 56
2.12.2 XML文档说明 56
2.13 C#预处理器指令 58
2.13.1 #define和#undef 59
2.13.2 #if,#elif,#else和#endif 59
2.13.3 #warning和#error 60
2.13.4 #region和#endregion 60
2.13.5 #line 61
2.13.6 #pragma 61
2.14 C#编程规则 61
2.14.1用于标识符的规则 61
2.14.2用法约定 62
2.15小结 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方法 89
3.7.2 ToString()方法 90
3.8扩展方法 92
3.9小结 92
第4章 继承 93
4.1继承的类型 93
4.1.1实现继承和接口继承 93
4.1.2多重继承 94
4.1.3结构和类 94
4.2实现继承 94
4.2.1虚方法 95
4.2.2隐藏方法 96
4.2.3调用函数的基类版本 97
4.2.4抽象类和抽象函数 98
4.2.5密封类和密封方法 98
4.2.6派生类的构造函数 99
4.3修饰符 103
4.3.1可见性修饰符 103
4.3.2其他修饰符 104
4.4接口 105
4.4.1定义和实现接口 106
4.4.2派生的接口 109
4.5小结 110
第5章 数组 111
5.1简单数组 111
5.1.1数组的声明 111
5.1.2数组的初始化 111
5.1.3访问数组元素 112
5.1.4使用引用类型 113
5.2多维数组 114
5.3锯齿数组 115
5.4 Array类 116
5.4.1属性 116
5.4.2创建数组 117
5.4.3复制数组 117
5.4.4排序 118
5.5数组和集合接口 121
5.5.1 IEumerable接口 121
5.5.2 ICollection接口 121
5.5.3 IList接口 121
5.6枚举 122
5.6.1 IEnumerator接口 123
5.6.2 foreach语句 123
5.6.3 yield语句 123
5.7小结 127
第6章 运算符和类型强制转换 128
6.1运算符 128
6.1.1运算符的简化操作 129
6.1.2条件运算符 131
6.1.3 checked和unchecked运算符 131
6.1.4 is运算符 132
6.1.5 as运算符 132
6.1.6 sizeof运算符 132
6.1.7 typeof运算符 133
6.1.8可空类型和运算符 133
6.1.9空接合运算符 133
6.1.10运算符的优先级 134
6.2类型的安全性 134
6.2.1类型转换 135
6.2.2装箱和拆箱 138
6.3对象的相等比较 139
6.3.1引用类型的相等比较 139
6.3.2值类型的相等比较 140
6.4运算符重载 141
6.4.1运算符的工作方式 142
6.4.2运算符重载的示例:Vector结构 142
6.5用户定义的数据类型转换 149
6.5.1执行用户定义的类型转换 150
6.5.2多重数据类型转换 156
6.6小结 159
第7章 委托和事件 160
7.1委托 160
7.1.1在C#中声明委托 161
7.1.2在C#中使用委托 162
7.1.3简单的委托示例 165
7.1.4 BubbleSorter示例 166
7.1.5多播委托 169
7.1.6匿名方法 172
7.1.7 λ表达式 173
7.1.8协变和抗变 175
7.2事件 176
7.2.1从接收器的角度讨论事件 177
7.2.2生成事件 179
7.3小结 182
第8章 字符串和正则表达式 184
8.1 System.String类 184
8.1.1创建字符串 185
8.1.2 StringBuilder成员 188
8.1.3格式化字符串 189
8.2正则表达式 194
8.2.1正则表达式概述 194
8.2.2 RegularExpressionsPlayaround示例 195
8.2.3显示结果 198
8.2.4匹配、组合和捕获 199
8.3小结 201
第9章 泛型 202
9.1概述 202
9.1.1性能 203
9.1.2类型安全 203
9.1.3二进制代码的重用 204
9.1.4代码的扩展 204
9.1.5命名约定 205
9.2创建泛型类 205
9.3泛型类的特性 209
9.3.1默认值 210
9.3.2约束 210
9.3.3继承 212
9.3.4静态成员 213
9.4泛型接口 213
9.5泛型方法 214
9.6泛型委托 216
9.6.1执行委托调用的方法 216
9.6.2对Array类使用泛型委托 218
9.7 Framework的其他泛型类型 220
9.7.1结构Nullable<T> 220
9.7.2 EventHandler<TEventArgs> 222
9.7.3 ArraySegment<T> 222
9.8小结 223
第10章 集合 224
10.1集合接口和类型 224
10.2列表 227
10.2.1创建列表 228
10.2.2只读集合 237
10.3队列 237
10.4栈 241
10.5链表 242
10.6有序表 248
10.7字典 250
10.7.1键的类型 251
10.7.2字典示例 252
10.7.3 Lookup类 255
10.7.4其他字典类 256
10.8 HashSet 257
10.9位数组 260
10.9.1 BitArray 260
10.9.2 BitVector32 262
10.10性能 264
10.11小结 266
第11章 Language Integrated Query 267
11.1 LINQ概述 267
11.1.1使用List<r>的查询 267
11.1.2扩展方法 273
11.1.3 λ表达式 275
11.1.4 LINQ查询 276
11.1.5推迟查询的执行 276
11.2标准的查询操作符 278
11.2.1过滤 280
11.2.2用索引来过滤 280
11.2.3类型过滤 281
11.2.4复合的from子句 281
11.2.5排序 282
11.2.6分组 283
11.2.7对嵌套的对象分组 284
11.2.8连接 285
11.2.9设置操作 287
11.2.10分区 288
11.2.11合计操作符 289
11.2.12转换 290
11.2.13生成操作符 291
11.3表达式树 292
11.4 LINQ提供程序 295
11.5小结 296
第12章 内存管理和指针 297
12.1后台内存管理 297
12.1.1值数据类型 297
12.1.2引用数据类型 299
12.1.3垃圾收集 300
12.2释放未托管的资源 301
12.2.1析构函数 301
12.2.2 IDisposable接口 303
12.2.3实现IDisposable接口和析构函数 304
12.3不安全的代码 305
12.3.1用指针直接访问内存 306
12.3.2指针示例:PointerPlayaround 314
12.3.3使用指针优化性能 318
12.4小结 321
第13章 反射 322
13.1定制特性 322
13.1.1编写定制特性 323
13.1.2定制特性示例:WhatsNewAttributes 326
13.2反射 329
13.2.1 System.Type类 329
13.2.2 TypeView示例 332
13.2.3 Assembly类 334
13.2.4完成WhatsNewAttributes示例 335
13.3小结 339
第14章 错误和异常 340
14.1异常类 340
14.2捕获异常 342
14.2.1执行多个catch块 344
14.2.2在其他代码中捕获异常 348
14.2.3 System.Exception属性 348
14.2.4没有处理异常时所发生的情况 349
14.2.5嵌套的try块 349
14.3用户定义的异常类 351
14.3.1捕获用户定义的异常 352
14.3.2抛出用户定义的异常 353
14.3.3定义异常类 356
14.4小结 358
第Ⅱ部分 Visual Studio 360
第15章 Visual Studio 2008 360
15.1使用Visual Studio 2008 360
15.1.1创建项目 364
15.1.2解决方案和项目 370
15.1.3 Windows应用程序代码 373
15.1.4读取Visual Studio 6项目 373
15.1.5项目的浏览和编码 374
15.1.6生成项目 382
15.1.7调试 386
15.2修订功能 389
15.3多目标 391
15.4 WPF、WCF、WF等 393
15.4.1在Visual Studio中建立WPF应用程序 393
15.4.2在Visual Studio中建立WF应用程序 395
15.5小结 396
第16章 部署 397
16.1部署的设计 397
16.2部署选项 397
16.2.1 Xcopy实用工具 398
16.2.2 Copy Web工具 398
16.2.3发布Web站点 398
16.2.4部署项目 398
16.2.5 ClickOnce 398
16.3部署的要求 398
16.4部署.NET运行库 399
16.5简单的部署 400
16.5.1 Xcopy部署 400
16.5.2 Xcopy和Web应用程序 401
16.5.3 Copy Web工具 401
16.5.4发布Web站点 401
16.6 Installer项目 402
16.6.1 Windows Installer 402
16.6.2创建安装程序 403
16.7 ClickOnce 411
16.7.1 ClickOnce操作 411
16.7.2发布应用程序 412
16.7.3 ClickOnce设置 412
16.7.4应用程序缓存 412
16.7.5安全性 413
16.7.6高级选项 413
16.8小结 418
第Ⅲ部分 基类库 420
第17章 程序集 420
17.1程序集的含义 420
17.1.1程序集的特性 421
17.1.2程序集的结构 421
17.1.3程序集的清单 422
17.1.4命名空间、程序集和组件 422
17.1.5私有程序集和共享程序集 423
17.1.6辅助程序集 423
17.1.7查看程序集 423
17.2构建程序集 424
17.2.1创建模块和程序集 424
17.2.2程序集的属性 426
17.3动态加载和创建程序集 428
17.4应用程序域 431
17.5共享程序集 435
17.5.1强名 435
17.5.2使用强名获得完整性 436
17.5.3全局程序集缓存 436
17.5.4创建共享程序集 438
17.5.5创建强名 439
17.5.6安装共享程序集 440
17.5.7使用共享程序集 440
17.5.8程序集的延迟签名 442
17.5.9引用 442
17.5.10本机图像生成器 443
17.6配置.NET应用程序 444
17.6.1配置类别 445
17.6.2为搜索程序集配置目录 446
17.7版本问题 448
17.7.1版本号 448
17.7.2编程获取版本 449
17.7.3应用程序配置文件 449
17.7.4发布方的策略文件 452
17.7.5运行库的版本 455
17.8小结 456
第18章 跟踪和事件 457
18.1跟踪 457
18.1.1跟踪源 458
18.1.2跟踪开关 459
18.1.3跟踪监听器 460
18.1.4过滤器 462
18.1.5断言 463
18.2事件日志 464
18.2.1事件日志体系架构 465
18.2.2事件日志类 466
18.2.3创建事件源 467
18.2.4写入事件日志 468
18.2.5资源文件 468
18.3性能监控 473
18.3.1性能监控类 473
18.3.2性能计数器的构建 473
18.3.3添加PerformanceCounter组件 474
18.3.4 perfmon.exe 476
18.4小结 477
第19章 线程和同步 478
19.1概述 478
19.2异步委托 479
19.2.1投票 480
19.2.2等待句柄 481
19.2.3异步回调 481
19.3 Thread类 483
19.3.1给线程传送数据 485
19.3.2后台线程 486
19.3.3线程的优先级 487
19.3.4控制线程 487
19.4线程池 488
19.5线程问题 489
19.5.1竞态条件 489
19.5.2死锁 492
19.6同步 493
19.6.1 lock语句和线程安全 494
19.6.2 Interlocked 499
19.6.3 Monitor类 500
19.6.4等待句柄 501
19.6.5 Mutex类 502
19.6.6 Semaphore类 503
19.6.7 Events类 505
19.6.8 ReaderWriterLockSlim 507
19.7 Timer类 510
19.8 COM单元 511
19.9基于事件的异步模式 512
19.9.1 BackgroundWorker类 513
19.9.2激活取消功能 516
19.9.3激活进度功能 517
19.9.4创建基于事件的异步组件 518
19.10小结 522
第20章 安全性 523
20.1身份验证和授权 523
20.1.1标识和Principal 523
20.1.2角色 525
20.1.3声明基于角色的安全性 525
20.1.4客户应用程序服务 526
20.2加密 531
20.2.1签名 533
20.2.2密钥的互换和安全传送 534
20.3资源的访问控制 537
20.4代码访问的安全性 540
20.4.1权限 541
20.4.2代码组 550
20.4.3策略的级别:Machine、User和Enterprise 557
20.5安全策略的管理 558
20.5.1代码组和权限的管理 561
20.5.2安全性的启用和禁用 561
20.5.3代码组的创建 562
20.5.4代码组的删除 562
20.5.5代码组权限的更改 563
20.5.6权限集的创建和应用 564
20.5.7使用强名发布代码 565
20.5.8使用证书发布代码 567
20.6小结 572
第21章 本地化 573
21.1 System.Globalization命名空间 573
21.1.1 Unicode问题 573
21.1.2文化和区域 574
21.1.3使用文化 578
21.1.4排序 582
21.2资源 584
21.2.1创建资源文件 584
21.2.2资源文件生成器 584
21.2.3 ResourceWriter 585
21.2.4使用资源文件 585
21.2.5 System.Resources命名空间 590
21.3使用Visual Studio的Windows Forms本地化示例 591
21.3.1编程修改文化 595
21.3.2使用定制资源文件 596
21.3.3资源的自动回退 597
21.3.4外包翻译 597
21.4用ASP.NET本地化 598
21.5用WPF本地化 600
21.5.1 WPF应用程序 600
21.5.2 .NET资源 601
21.5.3用XAML本地化 602
21.6定制的资源读取器 604
21.6.1创建DatabaseResourceReader类 605
21.6.2创建DatabaseResourceSet类 606
21.6.3创建DatabaseResource-Manager类 607
21.6.4 DatabaseResourceReader的客户应用程序 608
21.7创建定制文化 608
21.8小结 609
第22章 事务处理 610
22.1概述 610
22.1.1事务处理阶段 611
22.1.2 ACID属性 611
22.2数据库和实体类 612
22.3传统的事务处理 614
22.3.1 ADO.NET事务处理 614
22.3.2 System.EnterpriseServices 615
22.4 System.Transactions 616
22.4.1可提交的事务处理 618
22.4.2事务处理的升级 620
22.4.3依赖的事务处理 621
22.4.4环境事务处理 623
22.5隔离级别 630
22.6定制资源管理器 631
22.7 Windows Vista和WindowsServer 2008的事务处理 637
22.8小结 641
第23章 Windows服务 642
23.1 Windows服务 642
23.2 Windows服务的体系结构 643
23.2.1服务程序 643
23.2.2服务控制程序 645
23.2.3服务配置程序 645
23.3 System.ServiceProcess命名空间 645
23.4创建Windows服务 646
23.4.1使用套接字的类库 646
23.4.2 TcpClient示例 649
23.4.3 Windows服务项目 652
23.4.4线程和服务 656
23.4.5服务的安装 656
23.4.6安装程序 657
23.5服务的监视和控制 661
23.5.1 MMC计算机管理 661
23.5.2 net.exe 662
23.5.3 sc.exe 663
23.5.4 Visual Studio Server Explorer 664
23.5.5 ServiceController类 664
23.6故障排除 671
23.6.1交互式服务 671
23.6.2事件日志 672
23.7电源事件 673
23.8小结 673
第24章 互操作性 674
24.1 .NET和COM 674
24.1.1元数据 675
24.1.2释放内存 675
24.1.3接口 675
24.1.4方法绑定 677
24.1.5数据类型 677
24.1.6注册 678
24.1.7线程 678
24.1.8错误处理 679
24.1.9事件处理 680
24.2编组 680
24.3在.NET客户程序中使用COM组件 681
24.3.1创建COM组件 681
24.3.2创建Runtime Callable Wrapper 686
24.3.3使用RCW 687
24.3.4可交互操作的主程序集 689
24.3.5线程问题 689
24.3.6添加连接点 689
24.3.7在Windows窗体中使用ActiveX控件 692
24.3.8在ASP.NET中使用COM对象 694
24.4在COM客户程序中使用.NET组件 695
24.4.1 COM Callable Wrapper 695
24.4.2创建.NET组件 695
24.4.3创建类型库 696
24.4.4 COM互操作特性 698
24.4.5 COM注册 701
24.4.6创建COM客户程序 701
24.4.7添加连接点 703
24.4.8用sink对象创建客户程序 704
24.4.9在Internet Explorer中运行Windows窗体控件 705
24.5平台调用 706
24.6小结 709
第Ⅳ部分 数据 712
第25章 文件和注册表操作 712
25.1管理文件系统 712
25.1.1表示文件和文件夹的.NET类 713
25.1.2 Path类 716
25.1.3示例:文件浏览器 716
25.2移动、复制和删除文件 721
25.2.1 FilePropertiesAndMovement示例 721
25.2.2示例FilePropertiesAnd-Movement的代码 722
25.3读写文件 724
25.3.1读取文件 725
25.3.2写入文件 726
25.3.3流 727
25.3.4缓存的流 729
25.3.5使用FileStream类读写二进制文件 729
25.3.6读写文本文件 734
25.4读取驱动器信息 740
25.5文件的安全性 742
25.5.1从文件中读取ACL 743
25.5.2从目录中读取ACL 744
25.5.3添加和删除文件中的ACL项 745
25.6读写注册表 746
25.6.1注册表 747
25.6.2 .NET注册表类 749
25.6.3 SelfPlacingWindow示例 751
25.7读写独立存储器 756
25.8小结 760
第26章 .NET数据访问 761
26.1 ADO.NET概述 761
26.1.1命名空间 762
26.1.2共享类 762
26.1.3数据库特定的类 763
26.2使用数据库连接 764
26.2.1管理连接字符串 765
26.2.2高效地使用连接 767
26.2.3事务处理 769
26.3命令 770
26.3.1执行命令 771
26.3.2调用存储过程 775
26.4快速数据访问:数据读取器 777
26.5管理数据和关系:DataSet类 780
26.5.1数据表 780
26.5.2数据列 781
26.5.3数据关系 786
26.5.4数据约束 787
26.6 XML模式:用XSD生成代码 790
26.7填充数据集 795
26.7.1用数据适配器来填充DataSet 796
26.7.2从XML中给数据集填充数据 797
26.8保存对数据集的修改 797
26.8.1通过数据适配器进行更新 797
26.8.2写入XML输出结果 800
26.9使用ADO.NET 801
26.9.1分层开发 801
26.9.2生成SQL Server的键 802
26.9.3命名约定 804
26.10小结 806
第27章 LINQ to SQL 807
27.1 LINQ to SQL和Visual Studio 2008 808
27.1.1使用LINQ to SQL调用Products表——创建控制台应用程序 809
27.1.2添加LINQ to SQL类 809
27.1.3 O/R设计器概述 810
27.1.4创建Product对象 811
27.2对象映射到LINQ对象上 813
27.2.1 DataContext对象 814
27.2.2 Table<TEntity>对象 817
27.3不使用O/R设计器工作 818
27.3.1创建自己的定制对象 818
27.3.2用定制的对象和LINQ进行查询 819
27.3.3用查询限制所调用的列 820
27.3.4使用列名 821
27.3.5创建自己的DataContext对象 821
27.4定制对象和O/R设计器 822
27.5查询数据库 824
27.5.1使用查询表达式 824
27.5.2查询表达式 825
27.5.3使用表达式过滤 825
27.5.4连接 826
27.5.5组合数据项 827
27.6存储过程 828
27.7小结 829
第28章 处理XML 830
28.1 .NET支持的XML标准 830
28.2 System.Xml命名空间 831
28.3使用System.Xml类 832
28.4读写流格式的XML 832
28.4.1使用XmlReader类 833
28.4.2使用XtnlReader类进行验证 836
28.4.3使用XmlWriter类 838
28.5在.NET中使用DOM 839
28.6使用XPathNavigator 844
28.6.1 System.Xml.XPath命名空间 844
28.6.2 System.Xml.Xsl命名空间 849
28.6.3调试XSLT 853
28.7 XML和ADO.NET 854
28.7.1将ADO.NET数据转换为XML文档 854
28.7.2把XML文档转换为ADO.NET数据 860
28.8在XML中串行化对象 862
28.9小结 871
第29章 LINQ to XML 872
29.1 LINQ to XML和.NET 3.5 873
29.1.1创建XML文档的新对象 873
29.1.2 Visual Basic 2008开辟了另一条道路 873
29.1.3命名空间和前缀 873
29.2 .NET Framework 3.5中的新XML对象 874
29.2.1 XDocument对象 874
29.2.2 XElement对象 874
29.2.3 XNamespace对象 875
29.2.4 XComment对象 877
29.2.5 XAttribute对象 878
29.3使用LINQ查询XML文档 879
29.3.1查询静态的XML文档 879
29.3.2查询动态的XML文档 880
29.4处理XML文档 882
29.4.1读取XML文档 882
29.4.2写入XML文档 883
29.5使用LINQ to SQL和LINQ to XML 884
29.5.1建立LINQ to SQL组件 885
29.5.2查询数据库,输出XML 885
29.6小结 887
第30章 .NET编程和SQL Server 888
30.1 .NET运行库的主机 888
30.2 Microsoft.SqlServer.Server 890
30.3用户定义的类型 891
30.3.1创建UDT 891
30.3.2使用UDT 896
30.3.3在客户端代码中使用UDT 896
30.4用户定义的合计函数 897
30.4.1创建用户定义的合计函数 898
30.4.2使用用户定义的合计函数 899
30.5存储过程 900
30.5.1创建存储过程 900
30.5.2使用存储过程 901
30.6用户定义的函数 902
30.6.1创建用户定义的函数 902
30.6.2使用用户定义的函数 903
30.7触发器 903
30.7.1创建触发器 904
30.7.2使用触发器 905
30.8 XML数据类型 905
30.8.1包含XML数据的表 905
30.8.2读取XML值 906
30.8.3数据的查询 909
30.8.4 XML数据修改语言(XML DML) 911
30.8.5 XML索引 912
30.8.6强类型化的XML 913
30.9小结 914
第Ⅴ部分 显示 916
第31章 Windows窗体 916
31.1创建Windows窗体应用程序 916
31.2 Control类 922
31.2.1大小和位置 922
31.2.2外观 923
31.2.3用户交互操作 923
31.2.4 Windows功能 924
31.2.5杂项功能 924
31.3标准控件和组件 925
31.3.1 Button控件 925
31.3.2 CheckBox控件 926
31.3.3 RadioButton控件 927
31.3.4 ComboBox控件、ListBox控件和CheckedListBox控件 927
31.3.5 DateTimePicker控件 929
31.3.6 ErrorProvider组件 930
31.3.7 HelpProvider组件 931
31.3.8 ImageList组件 931
31.3.9 Label控件 931
31.3.10 ListView控件 932
31.3.11 PictureBox控件 933
31.3.12 ProgressBar控件 934
31.3.13 TextBox控件、RichTextBox控件与MaskedTextBox控件 934
31.3.14 Panel控件 935
31.3.15 FlowLayoutPanel和TableLayoutPanel控件 936
31.3.16 SplitContainer控件 936
31.3.17 TabControl控件和TabPages控件 937
31.3.18 ToolStrip控件 937
31.3.19 MenuStrip控件 940
31.3.20 ContextMenuStrip控件 940
31.3.21 ToolStripMenuItem控件 940
31.3.22 ToolStripManager类 941
31.3.23 ToolStripContainer控件 941
31.4窗体 941
31.4.1 Form类 941
31.4.2多文档界面 946
31.4.3定制控件 947
31.5小结 957
第32章 数据绑定 958
32.1 DataGridView控件 958
32.1.1显示列表数据 958
32.1.2数据源 960
32.2 DataGridView类的层次结构 968
32.3数据绑定 970
32.3.1简单的绑定 971
32.3.2数据绑定对象 971
32.4 Visual Studio和数据访问 975
32.4.1创建一个连接 975
32.4.2选择数据 978
32.4.3更新数据源 978
32.4.4其他常见的要求 979
32.5小结 986
第33章 使用GDI+绘图 987
33.1理解绘图规则 987
33.1.1 GDI和GDI+ 987
33.1.2绘制图形 989
33.1.3使用OnPaint()绘制图形 992
33.1.4使用剪切区域 993
33.2测量坐标和区域 995
33.2.1 Point和PointF结构 995
33.2.2 Size和SizeF结构 996
33.2.3 Rectangle和 RectangleF结构 997
33.2.4 Region 998
33.3调试须知 999
33.4绘制可滚动的窗口 1000
33.5世界、页面和设备坐标 1004
33.6颜色 1005
33.6.1红绿蓝(RGB)值 1005
33.6.2命名的颜色 1006
33.6.3图形显示模式和安全的调色板 1006
33.6.4安全调色板 1007
33.7画笔和钢笔 1007
33.7.1画笔 1008
33.7.2钢笔 1008
33.8绘制图形和线条 1009
33.9显示图像 1011
33.10处理图像时的问题 1013
33.11绘制文本 1014
33.12简单的文本示例 1014
33.13字体和字体系列 1015
33.14示例:枚举字体系列 1017
33.15 编辑文本文档:CapsEditor示例 1019
33.15.1 Invalidate()方法 1023
33.15.2计算项和文档的大小 1024
33.15.3 OnPaint() 1025
33.15.4坐标转换 1026
33.15.5响应用户的输入 1028
33.16打印 1030
33.17小结 1035
第34章 Windows Presentation Foundation 1036
34.1概述 1036
34.1.1 XAML 1036
34.1.2设计人员和开发人员的合作 1041
34.1.3类层次结构 1042
31.1.4命名空间 1043
34.2形状 1044
34.3变换 1047
34.4笔刷 1047
34.4.1 SolidColorBrush 1048
34.4.2 LinearGradientBrush 1048
34.4.3 RadialGradientBrush 1049
34.4.4 DrawingBrush 1049
34.4.5 ImageBrush 1050
34.4.6 VisualBrush 1050
34.5控件 1052
34.5.1简单控件 1052
34.5.2内容控件 1052
34.5.3有标题的内容控件 1054
34.5.4项控件 1055
34.5.5带标题的项控件 1055
34.6布局 1056
34.6.1 StackPanel 1056
34.6.2 WrapPanel 1057
34.6.3 Canvas 1057
34.6.4 DockPanel 1058
34.6.5 Grid 1059
34.7事件处理 1060
34.8样式、模板和资源 1061
34.8.1样式 1061
34.8.2资源 1062
34.8.3创建列表框的样式 1074
34.9小结 1079
第35章 高级WPF 1080
35.1数据绑定 1080
35.1.1概述 1080
35.1.2用XAML绑定 1081
35.1.3简单对象的绑定 1083
35.1.4对象数据提供程序 1085
35.1.5列表绑定 1087
35.1.6绑定到XML上 1095
35.1.7绑定的验证 1097
35.2命令绑定 1101
35.3动画 1105
35.3.1时间线 1106
35.3.2触发器 1109
35.3.3故事板 1111
35.4在WPF中添加3D特性 1112
35.5 Windows窗体集成 1119
35.5.1 Windows窗体中的WPF控件 1119
35.5.2 WPF应用程序中的Windows窗体控件 1121
35.6 WPF浏览器应用程序 1122
35.7小结 1122
第36章 插件 1124
36.1 System.AddIn体系结构 1124
36.1.1插件的问题 1125
36.1.2管道体系结构 1125
36.1.3发现 1126
36.1.4激活和隔离 1127
36.1.5合同 1129
36.1.6生存期 1130
36.1.7版本问题 1131
36.2插件示例 1131
36.2.1计算器合同 1132
36.2.2计算器插件视图 1133
36.2.3计算器插件适配器 1133
36.2.4计算器插件 1135
36.2.5计算器主机视图 1136
36.2.6计算机主机适配器 1136
36.2.7计算器主机 1138
36.2.8其他插件 1141
36.3小结 1142
第37章 ASP.NET页面 1143
37.1 ASP.NET概述 1143
37.2 ASP.NET Web窗体 1145
37.2.1 ASP.NET代码模型 1148
37.2.2 ASP.NET服务器控件 1149
37.3 ADO.NET和数据绑定 1163
37.3.1更新会议登记应用程序 1163
37.3.2数据绑定的更多内容 1169
37.4应用程序配置 1175
37.5小结 1177
第38章 ASP.NET开发 1178
38.1用户控件和定制控件 1179
38.1.1用户控件 1179
38.1.2 PCSDemoSite中的用户控件 1185
38.1.3定制控件 1185
38.2 Master页面 1189
38.2.1在Web页面中访问Master页面 1191
38.2.2嵌套的Master页面 1192
38.2.3 PCSDemoSite中的Master页面 1192
38.3站点导航 1194
38.4安全性 1197
38.4.1使用安全向导添加Forms身份验证功能 1197
38.4.2实现登录系统 1200
38.4.3 Web登录服务器控件 1201
38.4.4保护目录 1202
38.4.5 PCSDemoSite中的安全性 1202
38.5主题 1204
38.5.1把主题应用于页面 1204
38.5.2定义主题 1205
38.5.3 PCSDemoSite中的主题 1206
38.6 Web Parts 1209
38.6.1 Web Parts应用程序组件 1209
38.6.2 Web Parts示例 1211
38.7小结 1217
第39章 ASP.NET AJAX 1218
39.1 Ajax的概念 1218
39.2 ASP.NET AJAX 1220
39.2.1核心功能 1221
39.2.2 ASP.NET AJAX Control Toolkit 1223
39.3使用ASP.NET AJAX 1224
39.3.1 ASP.NET AJAX网站示例 1224
39.3.2支持ASP.NET AJAX的网站配置 1227
39.3.3添加ASP.NET AJAX功能 1230
39.3.4使用AJAX库 1236
39.4小结 1244
第40章 Visual Studio Tools for Office 1246
40.1 VSTO概述 1246
40.1.1项目类型 1247
40.1.2项目特性 1249
40.2 VSTO基础 1250
40.2.1 Office对象模型 1250
40.2.2 VSTO命名空间 1251
40.2.3主机项和主机控件 1251
40.2.4基本的VSTO项目结构 1253
40.2.5 Globals类 1255
40.2.6事件处理 1256
40.3建立VSTO解决方案 1256
40.3.1管理应用程序级插件 1257
40.3.2与应用程序和文档交互操作 1258
40.3.3 UI的定制 1259
40.4示例应用程序 1264
40.5 VBA交互操作性 1273
40.6小结 1276
第Ⅵ部分 通信 1278
第41章 访问Internet 1278
41.1 WebClient类 1279
41.1.1下载文件 1279
41.1.2基本的Web客户示例 1279
41.1.3上传文件 1280
41.2 WebRequest类和WebResponse类 1281
41.3把输出结果显示为HTML页面 1284
41.3.1在应用程序中进行简单的Web浏览 1285
41.3.2启动Internet Explorer实例 1286
41.3.3给应用程序提供更多的IE类型特性 1287
41.3.4使用WebBrowser控件打印 1292
41.3.5显示请求页面的代码 1292
41.3.6 WebRequest和WebResponse的层次结构 1293
41.4实用工具类 1294
41.4.1 URI 1294
41.4.2 IP地址和DNS名称 1295
41.5较低层的协议 1297
41.6小结 1307
第42章 Windows Communication Foundation 1308
42.1 WCF概述 1308
42.1.1 SOAP 1309
42.1.2 WSDL 1310
42.1.3 JSON 1310
42.2简单的服务和客户 1311
42.2.1服务合同 1312
42.2.2服务的实现 1312
42.2.3 WCF服务主机和WCF测试客户机 1313
42.2.4定制服务主机 1315
42.2.5 WCF客户程序 1316
42.2.6诊断 1317
42.3合同 1319
42.3.1数据合同 1320
42.3.2版本问题 1320
42.3.3服务合同 1321
42.3.4消息合同 1322
42.4服务的实现 1322
42.5绑定 1328
42.6主机 1330
42.6.1定制主机 1330
42.6.2 WAS主机 1331
42.7客户程序 1332
42.8双向通信 1333
42.9小结 1336
第43章 Windows Workflow Foundation 1337
43.1 Hello World示例 1337
43.2活动 1338
43.2.1 IfElseActivity 1339
43.2.2 ParallelActivity 1340
43.2.3 CallExternalMethodActivity 1342
43.2.4 DelayActivity 1342
41.2.5 ListenActivity 1343
43.2.6活动的执行模型 1344
43.3定制的活动 1344
43.3.1活动的有效性验证 1346
43.3.2主题和设计器 1347
43.3.3 ActivityToolboxItem和图标 1348
43.3.4定制的复合活动 1350
43.4工作流 1356
43.4.1系列工作流 1357
43.4.2状态机工作流 1357
43.4.3给工作流传送参数 1359
43.4.4从工作流中返回结果 1360
43.4.5将参数绑定到活动上 1361
43.5工作流运行库 1362
43.6工作流服务 1362
43.6.1持续服务 1364
43.6.2跟踪服务 1365
43.6.3定制服务 1367
43.7与WCF集成 1368
43.8保存工作流 1370
43.9工作流设计器 1372
43.10小结 1372
第44章 Enterprise Services 1373
44.1概述 1373
44.1.1 Enterprise Services简史 1374
44.1.2使用Enterprise Services的场合 1374
44.1.3环境 1375
44.1.4自动的事务处理 1375
44.1.5分布式事务处理 1375
44.1.6对象池 1376
44.1.7基于角色的安全性 1376
44.1.8排队的组件 1376
44.1.9松散藕合的事件 1376
44.2创建简单的COM+应用程序 1377
44.2.1类ServicedComponent 1377
44.2.2标记程序集 1377
44.2.3程序集的属性 1378
44.2.4创建组件 1378
44.3部署 1380
44.3.1自动部署 1380
44.3.2手工部署 1380
44.3.3创建安装软件包 1380
44.4 Component Services浏览器 1381
44.5客户应用程序 1383
44.6事务处理 1384
44.6.1事务处理的属性 1384
44.6.2事务处理的结果 1385
44.7示例应用程序 1386
44.7.1实体类 1387
44.7.2 OrderControl组件 1388
44.7.3 OrderData组件 1389
44.7.4 OrderLineData组件 1391
44.7.5客户应用程序 1392
44.8集成WCF和Enterprise Services 1394
44.8.1 WCF服务Facade 1394
44.8.2客户程序 1397
44.9小结 1398
第45章 消息队列 1399
45.1概述 1399
45.1.1使用Message Queuing的场合 1400
45.1.2 Message Queuing特性 1401
45.2 Message Queuing产品 1401
45.3 Message Queuing结构 1402
45.3.1消息 1402
45.3.2消息队列 1403
45.4 Message Queuing管理工具 1404
45.4.1创建消息队列 1404
45.4.2消息队列属性 1404
45.5 Message Queuing的编程实现 1405
45.5.1创建消息队列 1406
45.5.2查找队列 1406
45.5.3打开已知的队列 1407
45.5.4发送消息 1408
45.5.5接收消息 1410
45.6课程订单应用程序 1412
45.6.1课程订单类库 1413
45.6.2课程订单消息发送程序 1413
45.6.3发送优先级和可恢复的消息 1415
45.6.4课程订单消息接收程序 1416
45.7接收结果 1419
45.7.1确认队列 1419
45.7.2响应队列 1420
45.8事务队列 1420
45.9消息队列和WCF 1421
45.9.1带数据合同的实体类 1422
45.9.2 WCF服务合同 1423
45.9.3 WCF消息接收程序 1424
45.9.4 WCF消息发送程序 1426
45.10消息队列的安装 1427
45.11小结 1428
第46章 目录服务 1429
46.1 Active Directory的体系结构 1430
46.1.1特性 1430
46.1.2 Active Directory的概念 1430
46.1.3 Active Directory数据的特性 1434
46.1.4模式 1434
46.2 Active Directory的管理工具 1435
46.2.1 Active Directory Users and Computers工具 1436
46.2.2 ADSI Edit工具 1437
46.3 Active Directory编程 1438
46.3.1 System.DirectoryServices命名空间中的类 1439
46.3.2绑定 1439
46.3.3获取目录项 1443
46.3.4对象集合 1444
46.3.5缓存 1445
46.3.6创建新对象 1446
46.3.7更新目录项 1446
46.3.8访问内部的ADSI对象 1447
46.3.9在Active.Directory中搜索 1448
46.4搜索用户对象 1452
46.4.1用户界面 1452
46.4.2获取模式命名环境 1453
46.4.3获取User类的属性名 1453
46.4.4搜索用户对象 1454
46.5账户管理 1456
46.5.1显示用户信息 1457
46.5.2创建用户 1457
46.5.3重置密码 1458
46.5.4创建组 1458
46.5.5在组中添加用户 1459
46.5.6查找用户 1459
46.6 DSML 1460
46.6.1命名空间System.Directory-Services.Protocols中的类 1460
46.6.2用DSML搜索Active Directory对象 1461
46.7小结 1462
第47章 对等网络 1463
47.1 P2P概述 1463
47.1.1客户机-服务器体系结构 1463
47.1.2 P2P体系结构 1464
47.1.3 P2P体系结构的挑战 1465
47.1.4 P2P术语 1466
47.1.5 P2P解决方案 1466
47.2 Microsoft Windows Peer-to-Peer Networking 1466
47.2.1 Peer Name Resolution Protocol(PNRP) 1467
47.2.2 People Near Me 1469
47.3建立P2P应用程序 1470
47.3.1 System.Net.PeerToPeer 1470
47.3.2 System.Net.PeerTo-Peer.Collaboration 1475
47.4小结 1478
第48章 Syndication 1479
48.1 System.ServiceModel.Syndication命名空间概述 1479
48.2 Syndication阅读器 1480
48.3提供SyndicationFeed 1482
48.4小结 1487
第Ⅶ部分 附录 1490
附录A ADO.NET Entiry Framework 1490
附录B C#、Visual Basic和C++/CLI 1512
附录C Windows Vista和Windows Server 2008 1541