图书介绍
.NET 3.5与VB 2008高级编程 第3版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 姜玲玲,唐明霞 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302208419
- 出版时间:2009
- 标注页数:1152页
- 文件大小:237MB
- 文件页数:1186页
- 主题词:BASIC语言-程序设计-教材
PDF下载
下载说明
.NET 3.5与VB 2008高级编程 第3版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第Ⅰ部分 Visual Basic 2008与.NET平台第1章 .NET基本原理3
1.1 历史状态3
1.1.1 C/Win32 API程序员的生活3
1.1.2 C++/MFC程序员的生活4
1.1.3 Visual Basic 6.0程序员的生活4
1.1.4 Java/J2EE程序员的生活4
1.1.5 COM程序员的生活5
1.1.6 Windows DNA程序员的生活5
1.2 .NET解决方案6
1.3 .NET平台的构件块(CLR、CTS与CLS)6
1.4 Visual Basic 2008的新内容7
1.5 其他.NET支持语言8
1.6 .NET程序集概览10
1.6.1 单文件与多文件程序集11
1.6.2 公共中间语言的作用11
1.6.3 .NET类型元数据的作用14
1.6.4 程序集清单的作用15
1.7 公共类型系统15
1.7.1 CTS类类型16
1.7.2 CTS接口类型16
1.7.3 CTS结构类型16
1.7.4 CTS枚举类型17
1.7.5 CTS委托类型17
1.7.6 CTS类型成员17
1.7.7 固有CTS数据类型18
1.8 公共语言规范18
1.9 了解公共语言运行库20
1.10 程序集/名称空间/类型之间的区别21
1.10.1 通过编程访问名称空间24
1.10.2 引用外部程序集25
1.11 使用ildasm.exe25
1.11.1 查看CIL代码26
1.11.2 查看类型元数据26
1.11.3 查看程序集元数据(也称为清单)27
1.12 使用Lutz Roeder的reflector27
1.13 部署.NET运行库28
1.14 .NET的平台无关特性29
1.15 小结30
第2章 构建Visual Basic 2008应用程序31
2.1 .NET Framework 3.5 SDK的作用31
2.2 VB 2008命令行编译器(vbc.exe)32
2.3 使用vbc.exe构建VB 2008应用程序32
2.3.1 使用vbc.exe引用外部程序集34
2.3.2 使用vbc.exe编译多个源文件35
2.3.3 使用vbc.exe引用多个外部程序集36
2.4 使用vbc.exe响应文件36
2.5 使用SharpDevelop构建.NET应用程序38
2.6 使用Visual Basic 2008 Express构建.NET应用程序41
2.7 使用Visual Studio 2008构建.NET应用程序42
2.7.1 Visual Studio 2008的一些特有功能42
2.7.2 使用New Project对话框选择.NET Framework的版本43
2.7.3 使用Solution Explorer实用程序43
2.7.4 Class View实用程序45
2.7.5 Object Browser实用程序45
2.7.6 Visual Studio 2008代码片断技术45
2.7.7 可视化类设计器46
2.7.8 Object Test Bench49
2.7.9 综合帮助系统50
2.8 Visual Basic 6.0兼容性程序集的作用51
2.9 其他.NET开发工具的部分目录52
2.10 小结53
第Ⅱ部分 核心VB编程结构57
第3章 VB 2008编程结构(上)57
3.1 Module类型的作用57
3.1.1 带多个模块的项目58
3.1.2 模块是不能创建的59
3.1.3 重命名初始模块60
3.1.4 模块的成员60
3.2 Main方法的作用61
3.2.1 使用System.Environment处理命令行参数61
3.2.2 使用Main()处理命令行参数62
3.2.3 Main()作为函数(而不是作为子例程)62
3.2.4 使用Visual Studio 2008指定命令行参数63
3.3 一个有趣的附加作用:System.Environment类的一些其他成员63
3.4 System.Console类64
3.4.1 使用Console类的基本输入输出65
3.4.2 格式化控制台输出65
3.4.3 .NET字符串格式化标记66
3.4.4 使用String.Format()格式化字符串67
3.5 系统数据类型与VB简洁表示法67
3.5.1 变量声明和初始化68
3.5.2 数据类型的默认值69
3.5.3 数据类型类层次结构70
3.5.4 固有数据类型和New关键字71
3.5.5 体验数值数据类型71
3.5.6 System.Boolean的成员72
3.5.7 System.Char的成员72
3.5.8 分析字符串数据中的值73
3.6 System.String类型73
3.6.1 基本字符串操作74
3.6.2 字符串连接(以及Newline常量)74
3.6.3 字符串和相等76
3.6.4 字符串是不能改变的76
3.6.5 System.Text.StringBuilder类型77
3.7 窄化(显式)或宽化(隐式)的数据类型转换78
3.7.1 Option Strict80
3.7.2 显式转换函数82
3.7.3 System.Convert的作用83
3.8 构建Visual Basic 2008代码语句83
3.8.1 语句延续字符83
3.8.2 在单行上定义多个语句84
3.9 VB 2008流程控制语句结构85
3.9.1 If/Then/Else语句85
3.9.2 构建复杂条件表达式86
3.9.3 Select/Case语句87
3.10 VB 2008迭代结构87
3.10.1 For/Next循环88
3.10.2 For/Each循环88
3.10.3 Do/While和Do/Until循环结构89
3.10.4 With结构90
3.11 小结90
第4章 VB 2008编程结构(下)91
4.1 定义子例程与函数91
4.1.1 ByVal参数修饰符92
4.1.2 ByRef参数修饰符93
4.1.3 定义可选参数94
4.1.4 使用ParamArrays95
4.1.5 方法调用约定96
4.1.6 包含静态局部变量的方法97
4.2 成员重载98
4.2.1 Overloads关键字99
4.2.2 方法重载的细节99
4.3 VB 2008中的数组操作100
4.3.1 VB 2008数组初始化语法101
4.3.2 定义Objects的数组101
4.3.3 定义数组的下边界102
4.3.4 Redim/Preserve语法103
4.3.5 使用多维数组104
4.3.6 System.Array类105
4.4 VB 2008的枚举106
4.4.1 控制枚举的底层存储107
4.4.2 声明和使用枚举107
4.4.3 System.Enum类型(以及解析关键字命名冲突的一个教训)108
4.4.4 动态地发现枚举的名/值对110
4.5 VB 2008结构类型111
4.6 小结113
第5章 设计封装类类型114
5.1 VB 2008类类型简介114
5.2 类构造函数117
5.2.1 默认构造函数的作用119
5.2.2 定义自定义构造函数119
5.2.3 再次介绍默认构造函数120
5.3 Me关键字的作用121
5.3.1 使用Me链接构造函数调用123
5.3.2 观察构造函数流程125
5.4 Shared关键字126
5.4.1 定义共享方法(和字段)126
5.4.2 定义共享数据128
5.4.3 定义共享构造函数130
5.5 定义OOP的支柱131
5.5.1 封装的作用132
5.5.2 继承的作用132
5.5.3 多态的作用133
5.6 Visual Basic 2008访问修饰符134
5.6.1 访问修饰符与嵌套类型135
5.6.2 默认访问修饰符135
5.6.3 访问修饰符与字段数据136
5.7 第一个支柱:VB 2008的封装服务136
5.7.1 使用传统的取值和赋值封装137
5.7.2 使用属性封装138
5.7.3 属性的内部表示140
5.7.4 控制属性可见性级别的Get/Set语句142
5.7.5 只读和只写属性142
5.7.6 共享属性142
5.8 常量数据143
5.9 只读字段145
5.10 局部类型定义146
5.11 通过XML文档化VB 2008源代码147
5.12 使我们的概念形象化151
5.13 小结151
第6章 继承与多态152
6.1 继承的基本机制152
6.1.1 Inherits关键字153
6.1.2 关于多个基类154
6.1.3 NotInheritable关键字155
6.2 修订Visual Studio 2008类图156
6.3 第二个支柱:继承的细节157
6.3.1 使用MyBase控制基类的创建159
6.3.2 Protected关键字160
6.3.3 添加密封类161
6.4 包容/委托模型的编程162
6.5 第三个支柱:VB 2008的多态支持165
6.5.1 Overridable和Overrides关键字166
6.5.2 用Visual Studio 2008进行重写167
6.5.3 NotOverridable关键字168
6.5.4 抽象类和MustInherit关键字169
6.5.5 用MustOverride构建一个多态接口170
6.5.6 成员屏蔽173
6.6 基类/派生类的类型强制转换规则174
6.7 终极父类:System.Object176
6.7.1 重写System.Object.ToString()179
6.7.2 重写System.Object.Equals()179
6.7.3 重写System.Object.GetHashCode()180
6.7.4 测试修改后的Person类181
6.7.5 System.Object的共享成员181
6.8 小结182
第7章 结构化异常处理183
7.1 关于错误、bug和异常183
7.2 .NET异常处理的作用184
7.2.1 .NET异常处理的原子性184
7.2.2 System.Exception基类185
7.3 最简单的示例186
7.3.1 抛出一个简单的异常187
7.3.2 捕获异常188
7.4 配置异常的状态189
7.4.1 TargetSite属性189
7.4.2 StackTrace属性190
7.4.3 HelpLink属性190
7.4.4 Data属性191
7.5 系统级异常(System.SystemException)192
7.6 应用程序级异常(System.ApplicationException)193
7.6.1 构建自定义异常(Ⅰ)193
7.6.2 构建自定义异常(Ⅱ)195
7.6.3 构建自定义异常(Ⅲ)195
7.6.4 按Visual Studio方式构建自定义异常196
7.7 处理多个异常196
7.7.1 广义Catch语句198
7.7.2 重新抛出异常199
7.7.3 内部异常199
7.8 Finally块200
7.9 谁在抛出什么201
7.10 未处理异常的结果202
7.11 使用Visual Studio 2008调试未处理异常202
7.12 融合VB6错误处理与结构化异常处理203
7.13 小结204
第8章 对象生存期205
8.1 类、对象和引用205
8.2 对象生存期基础206
8.2.1 CIL的New关键字207
8.2.2 将对象引用设置成Nothing208
8.3 应用程序根的作用209
8.4 对象代210
8.5 System.GC类型210
8.6 构建可终结对象213
8.6.1 重写System.Object.Finalize()214
8.6.2 详细介绍终结过程215
8.7 构建可诊断对象216
8.8 构建可终结和可诊断类型218
8.9 小结220
第Ⅲ部分 高级VB编程结构223
第9章 使用接口类型223
9.1 接口类型223
9.2 定义自定义接口225
9.3 实现接口226
9.3.1 更新Hexagon类227
9.3.2 支持多个接口的类型228
9.4 与支持接口的类型进行交互229
9.4.1 使用CType()获取接口引用230
9.4.2 使用TypeOf/Is获取接口引用230
9.4.3 作为成员参数的接口231
9.4.4 作为返回值的接口233
9.4.5 接口类型的数组234
9.5 使用Implements关键字解决名称冲突问题234
9.5.1 通过Implements关键字定义通用实现方式236
9.5.2 使用Implements关键字对对象级别隐藏接口方法237
9.5.3 设计接口层次结构238
9.6 构建可枚举的类型(IEnumerable和IEnumerator)239
9.6.1 构建可以克隆的对象(ICloneable)241
9.6.2 一个更精细的克隆示例243
9.7 构建可比较的对象(IComparable)246
9.7.1 指定多种排序次序(IComparer)248
9.7.2 自定义属性与自定义排序类型249
9.8 使用接口作为回调机制250
9.9 小结253
第10章 集合、泛型和可为空值的数据类型254
10.1 System.Collections的非泛型类型254
10.1.1 System.Collections命名空间的接口255
10.1.2 IDictionaryEnumerator的作用256
10.1.3 IList的作用256
10.1.4 System.Collections的类类型257
10.2 System.Collections.Specialized名称空间260
10.3 包装与解除包装操作261
10.3.1 部分包装和解除包装实例262
10.3.2 解除自定义值类型的包装263
10.3.3 包装和解除包装操作的问题264
10.4 类型安全性和强类型的集合264
10.5 System.Collections.Generic名称空间269
10.6 可为空值的数据类型和System.Nullable(Of T)泛型类型272
10.6.1 使用可为空值的类型273
10.6.2 Visual Basic 2008可为空值的运算符(?)274
10.7 创建泛型方法275
10.8 创建泛型结构(或类)277
10.9 创建自定义泛型集合279
10.9.1 自定义泛型集合类的用处280
10.9.2 约束类型参数282
10.9.3 缺少运算符约束283
10.10 创建泛型接口284
10.11 创建泛型委托285
10.12 小结287
第11章 委托、事件和Lambdas288
11.1 了解.NET委托类型288
11.1.1 在VB 2008中定义委托类型289
11.1.2 研究自动生成的类类型290
11.1.3 System.MulticastDelegate和System.Delegate基类291
11.2 可能最简单的委托示例292
11.3 使用委托更新Car类型294
11.3.1 激活多播297
11.3.2 从委托的调用列表中删除目标298
11.4 了解(和使用)事件299
11.4.1 使用RaiseEvent关键字激活事件299
11.4.2 事件的本质300
11.4.3 使用WithEvents和Handles关联引入的事件301
11.4.4 使用Handles关键字多播302
11.4.5 为多个事件定义单个处理程序302
11.4.6 使用AddHandler/RemoveHandler动态关联引入的事件303
11.5 定义“规规矩矩的”事件304
11.6 定义强类型事件306
11.7 定制事件注册过程307
11.7.1 定义自定义事件307
11.7.2 使用自定义委托来自定义事件309
11.8 Visual Basic Lambda表达式310
11.8.1 分解Lambda表达式312
11.8.2 使用多个参数的Lambda表达式313
11.8.3 使用自定义方法赋值Lambda参数314
11.8.4 使用Zero参数的Lambda表达式315
11.9 小结315
第12章 运算符重载和自定义转换程序316
12.1 运算符重载316
12.1.1 运算符重载的情况317
12.1.2 重载二元运算符319
12.1.3 重载相等运算符320
12.1.4 重载比较运算符320
12.1.5 关于运算符重载的最后思考321
12.2 值类型和引用类型的详细情况322
12.2.1 值类型、引用类型和赋值运算符323
12.2.2 包含引用类型的值类型325
12.2.3 按值传递引用类型326
12.2.4 按引用传递引用类型327
12.2.5 值和引用类型:最后的细节328
12.2.6 回顾:数值转换329
12.2.7 回顾:相关类类型之间的转换329
12.3 创建自定义转换程序330
12.4 定义隐式转换程序332
12.5 VB DirectCast关键字334
12.6 小结336
第13章 VB 2008特有的语言特性337
13.1 了解隐式数据类型化337
13.1.1 迭代结构中的隐式类型化339
13.1.2 隐式类型数据是强类型数据340
13.1.3 禁用Option Infer340
13.1.4 后期绑定与隐式类型化341
13.1.5 隐式类型变量的限制343
13.1.6 隐式类型局部变量的有用性343
13.2 了解扩展方法344
13.2.1 定义扩展方法344
13.2.2 重载扩展方法345
13.2.3 在实例级别上调用扩展方法346
13.2.4 调用定义模块上的扩展方法346
13.2.5 扩展方法的作用域347
13.2.6 导入定义扩展方法的类型348
13.2.7 使用Visual Studio 2008标识扩展方法349
13.2.8 构建和使用扩展库349
13.2.9 通过扩展方法扩展接口类型350
13.3 对象初始化器语法351
13.3.1 使用初始化语法调用自定义构造函数353
13.3.2 初始化包含的类型354
13.4 匿名类型355
13.4.1 匿名类型的内部表示356
13.4.2 ToString()和GetHashCode()的实现方式357
13.4.3 匿名类型相等性的语义357
13.4.4 包含匿名类型的匿名类型359
13.5 小结359
第14章 LINQ概述360
14.1 了解LINQ的作用360
14.1.1 LINQ表达式是强类型且可扩展361
14.1.2 核心LINQ程序集361
14.2 LINQ查询表达式概述362
14.2.1 LINQ和隐式类型局部变量364
14.2.2 LINQ和扩展方法365
14.2.3 延期执行的作用365
14.2.4 立即执行的作用366
14.3 LINQ和泛型集合367
14.4 LINQ和非泛型集合368
14.5 LINQ查询运算符的内部表示370
14.5.1 使用查询运算符构建查询表达式(重访)371
14.5.2 使用Enumerable类型和Lambda构建查询表达式371
14.5.3 使用Enumerable类型和原始委托构建查询表达式372
14.6 VB LINQ查询运算符373
14.6.1 使用Enumerable计数374
14.6.2 构建新的测试项目374
14.7 LINQ查询:本身是孤岛吗379
14.8 小结381
第Ⅳ部分 使用.NET程序集编程385
第15章 .NET程序集概述385
15.1 .NET程序集的作用385
15.1.1 程序集提示代码重用385
15.1.2 程序集建立类型边界386
15.1.3 程序集是可版本化单元386
15.1.4 程序集是自描述对象386
15.1.5 程序集是可配置对象386
15.2 了解.NET程序集的格式387
15.2.1 Win32文件头387
15.2.2 CLR文件头387
15.2.3 CIL代码、类型元数据和程序集清单388
15.2.4 可选的程序集资源389
15.2.5 单文件和多文件的程序集389
15.3 构造自定义的.NET名称空间390
15.3.1 观察根名称空间391
15.3.2 定义根名称空间以外的名称空间392
15.3.3 导入自定义的名称空间393
15.3.4 使用Imports关键字构建类型别名393
15.4 构建和使用单文件程序集395
15.4.1 清单397
15.4 2 CIL398
15.4.3 类型元数据399
15.4.4 构建VB 2008客户端应用程序400
15.4.5 构建C#客户端应用程序401
15.4.6 使用跨语言继承402
15.5 构建和使用多文件程序集403
15.5.1 ufo.netmodule文件404
15.5.2 airvehicles.dll文件404
15.5.3 使用多文件程序集405
15.6 私有程序集406
15.6.1 私有程序集的身份406
15.6.2 探查过程406
15.6.3 配置私有程序集407
15.6.4 配置文件和Visual Studio 2008409
15.6.5 .NET Framework配置实用程序409
15.7 共享程序集411
15.7.1 强名411
15.7.2 使用sn.exe强命名CarLibrary.dll413
15.7.3 使用Visual Studio 2008分配强名414
15.7.4 在GAC中安装/删除共享程序集414
15.8 使用共享程序集415
15.9 配置共享程序集416
15.9.1 冻结当前的共享程序集417
15.9.2 构建共享程序集版本2.0.0.0417
15.9.3 动态重定向到共享程序集的特定版本418
15.9.4 回顾.NET Framework配置实用程序419
15.10 发布者策略程序集420
15.11 〈codeBase〉元素421
15.12 System.Configuration名称空间423
15.13 小结424
第16章 类型反射、后期绑定和基于属性的编程425
16.1 类型元数据的必要性425
16.1.1 查看EngineState枚举的(部分)元数据426
16.1.2 查看Car类型的(部分)元数据426
16.1.3 TypeRef427
16.1.4 归档定义的程序集428
16.1.5 归档引用的程序集428
16.1.6 归档字符串文字428
16.2 反射429
16.2.1 System.Type类430
16.2.2 使用System.Object.GetType()获得类型引用430
16.2.3 使用System.Type.GetType()获得类型引用431
16.2.4 使用GetType()获得类型引用431
16.3 构建自定义的元数据查看程序432
16.3.1 方法的反射432
16.3.2 字段和属性的反射432
16.3.3 已实现接口的反射433
16.3.4 显示各种零碎的内容433
16.3.5 实现Main()方法433
16.3.6 方法参数和返回值的反射434
16.4 动态加载程序集435
16.5 共享程序集的反射437
16.6 后期绑定439
16.6.1 使用System.Activator类执行后期绑定439
16.6.2 调用无参数的方法440
16.6.3 调用带有参数的方法440
16.7 属性编程441
16.7.1 属性使用程序441
16.7.2 在VB 2008中应用预先定义的属性442
16.7.3 指定属性的构造函数参数443
16.7.4 实际应用的〈Obsolete()〉属性444
16.7.5 VB 2008属性简写符号444
16.8 构建自定义的属性445
16.8.1 应用自定义属性445
16.8.2 限制属性使用446
16.9 程序集级(和模块级)的属性447
16.10 使用早期绑定反射属性448
16.11 使用后期绑定反射属性449
16.12 综合介绍反射、后期绑定和自定义属性450
16.13 构建可扩展的应用程序451
16.13.1 构建Common SnappableTypes.dll451
16.13.2 构建VB 2008管理单元452
16.13.3 构建C#管理单元453
16.13.4 构建可扩展的Windows Forms应用程序453
16.14 小结455
第17章 进程、AppDomain和对象上下文456
17.1 回顾传统的Win32进程456
17.1.1 线程概览457
17.1.2 在.NET平台下与进程交互458
17.1.3 列举运行的进程459
17.1.4 研究特定的进程460
17.1.5 研究进程的线程集460
17.1.6 研究进程的模块集462
17.1.7 以编程方式启动和停止进程462
17.2 .NET应用程序域463
17.2.1 列举进程的AppDomain464
17.2.2 以编程方式创建新的AppDomain465
17.2.3 以编程方式卸载AppDomain467
17.3 对象上下文边界468
17.3.1 上下文敏捷和上下文绑定类型468
17.3.2v定义上下文绑定对象469
17.3.3 检查对象的上下文469
17.4 总结进程、应用程序域和上下文471
17.5 小结471
第18章 构建多线程应用程序472
18.1 进程/应用程序域/上下文/线程之间的关系472
18.2 简要回顾.NET委托474
18.3 委托的异步特性476
18.3.1 BeginInvoke()和EndInvoke()方法476
18.3.2 System.IAsyncResult接口476
18.4 异步调用方法477
18.4.1 同步调用线程477
18.4.2 AsyncCallback委托的作用479
18.4.3 AsyncResult类的作用480
18.4.4 传递和接收自定义的状态数据480
18.5 System.Threading名称空间481
18.6 System.Threading.Thread类482
18.6.1 获得当前线程的统计483
18.6.2 Name属性483
18.6.3 Priority属性484
18.7 以编程方式创建辅助线程484
18.7.1 使用ThreadStart委托485
18.7.2 创建线程:速记符号486
18.7.3 使用ParameterizedThreadStart委托487
18.7.4 前台线程和后台线程488
18.8 并发性问题489
18.8.1 使用SyncLock关键字同步491
18.8.2 使用System.Threading.Monitor类型同步化492
18.8.3 使用System.Threading.Interlocked类型同步493
18.8.4 使用〈Synchronization()〉属性同步494
18.9 使用TimerCallback编程495
18.10 CLR线程池496
18.11 BackgroundWorker组件的作用497
18.11.1 使用BackgroundWorker类型498
18.11.2 使用BackgroundWorker类型处理数据499
18.12 小结500
第19章 .NET互操作性程序集501
19.1 .NET互操作性的作用域501
19.2 .NET到COM互操作性的简单示例502
19.3 .NET互操作程序集504
19.4 运行库可调用封装程序506
19.4.1 RCW:将COM类型转换为.NET类型507
19.4.2 RCW:管理COM类(coclass)的引用计数507
19.4.3 RCW:隐藏低级的COM接口508
19.5 COM IDL的作用508
19.5.1 观察为VB COM服务器生成的IDL510
19.5.2 IDL属性510
19.5.3 IDL库语句511
19.5.4 [default]接口的作用511
19.5.5 IDispatch的作用511
19.5.6 IDL形参属性512
19.5.7 使用类型库构建互操作程序集512
19.6 后期绑定CoCalc COM类513
19.7 构建更有趣的VB6 COM服务器514
19.7.1 支持额外的COM接口515
19.7.2 提供内部对象516
19.8 互操作程序集517
19.8.1 构建VB 2008客户端应用程序518
19.8.2 与CoCar类型交互518
19.8.3 截获COM事件520
19.9 COM到.NET互操作性521
19.10 CCW的作用522
19.11 .NET类接口的作用522
19.12 构建.NET类型523
19.12.1 使用Visual Studio 2008插入COM类524
19.12.2 定义强名526
19.13 生成类型库并注册.NET类型526
19.14 导出的类型信息527
19.15 构建VB6测试客户端528
19.16 小结528
第Ⅴ部分 .NET基类库531
第20章 文件和目录操作531
20.1 System.IO名称空间531
20.2 Directory(Info)和File(Info)类型532
20.3 使用DirectoryInfo类型533
20.3.1 使用DirectoryInfo类型列举文件534
20.3.2 使用DirectoryInfo类型创建子目录535
20.4 使用Directory类型536
20.5 使用DriveInfo类类型537
20.6 使用FileInfo类537
20.6.1 FileInfo.Create()方法538
20.6.2 FileInfo.Open()方法539
20.6.3 FileInfo.OpenRead()和FileInfo.OpenWrite()方法540
20.6.4 FileInfo.OpenText()方法540
20.6.5 FileInfo.CreateText()和FileInfo.AppendText()方法541
20.7 使用File类型541
20.8 抽象的Stream类543
20.9 使用StreamWriter和StreamReader545
20.9.1 写入文本文件546
20.9.2 从文本文件读取546
20.9.3 直接创建StreamWriter/StreamReader对象547
20.10 使用StringWriter和StringReader548
20.11 使用BinaryWriter和BinaryReader549
20.12 以编程方式“监视”文件551
20.13 执行异步文件I/O552
20.14 小结554
第21章 对象串行化555
21.1 了解对象串行化555
21.2 配置用于串行化的对象557
21.3 选择串行化格式器558
21.3.1 IFormatter和IRemotingFormatting接口559
21.3.2 格式器之间的类型精确度560
21.4 使用BinaryFormatter串行化对象560
21.5 使用SoapFormatter串行化对象562
21.6 使用XmlSerializer串行化对象563
21.7 持久保存对象集合565
21.8 自定义串行化过程567
21.8.1 深入研究对象串行化567
21.8.2 使用ISerializable自定义串行化568
21.8.3 使用属性自定义串行化570
21.9 小结572
第22章 ADO.NET第1部分:连接层573
22.1 ADO.NET的高级定义573
22.2 ADO.NET数据提供者574
22.2.1 Microsoft提供的ADO.NET数据提供者576
22.2.2 获得第三方的ADO.NET数据提供者577
22.3 额外的ADO.NET名称空间577
22.4 System.Data名称空间的类型578
22.4.1 IDbConnection接口的作用579
22.4.2 IDbTransaction接口的作用579
22.4.3 IDbCommand接口的作用579
22.4.4 IDbDataParameter和IDataParameter接口的作用580
22.4.5 IDbDataAdapter和IDataAdapter接口的作用580
22.4.6 IDataReader和IDataRecord接口的作用581
22.5 使用接口抽象化数据提供者582
22.6 创建AutoLot数据库585
22.6.1 创建Inventory表585
22.6.2 创建GetPetName()存储过程586
22.6.3 创建Customers和Orders表587
22.6.4 可视化创建表关系587
22.7 ADO.NET数据提供者工厂模型588
22.7.1 已注册的数据提供者工厂589
22.7.2 完整的数据提供者工厂模型示例590
22.7.3 〈connectionStrings〉元素592
22.8 ADO.NET的连接层593
22.8.1 使用连接对象594
22.8.2 使用ConnectionStringBuilder对象596
22.8.3 使用命令对象597
22.9 使用数据读取器598
22.10 构建可重用的数据访问库600
22.10.1 添加连接逻辑601
22.10.2 添加插入逻辑602
22.10.3 添加删除逻辑602
22.10.4 添加更新逻辑603
22.10.5 添加选择逻辑603
22.10.6 使用参数化的命令对象603
22.10.7 使用DbCommand执行存储过程605
22.11 创建基于控制台UI的前端607
22.11.1 实现Main()方法607
22.11.2 实现ShowInstructions()和ClearConsole()方法609
22.11.3 实现ListInventory()方法609
22.11.4 实现DeleteCar()方法610
22.11.5 实现InsertNewCar()方法610
22.11.6 实现UpdateCarPetName()方法610
22.11.7 调用存储过程611
22.12 使用SqlCommand执行异步数据访问611
22.13 数据库事务613
22.13.1 ADo.NET事务对象的关键成员614
22.13.2 向InventoryDAL添加事务方法614
22.13.3 测试数据库事务616
22.14 小结617
第23章 ADO.NET第2部分:断开连接层618
23.1 ADO.NET的断开连接层618
23.2 DataSet的作用619
23.2.1 DataSet的关键属性619
23.2.2 DataSet的关键方法620
23.2.3 构建DataSet620
23.3 使用DataColumn621
23.3.1 构建DataColumn622
23.3.2 启用自动递增字段622
23.3.3 向DataTable添加DataColumn623
23.4 使用DataRow623
23.4.1 RowState属性625
23.4.2 DataRowVersion属性626
23.5 使用DataTable627
23.5.1 在DataSet中插入DataTable627
23.5.2 使用DataTableReader对象处理DataTable数据628
23.5.3 将DataTable/DataSet对象串行化为XML629
23.5.4 以二进制格式串行化DataTable/DataSet对象630
23.6 将DataTable对象绑定到用户界面631
23.6.1 通过泛型List(Of T)填充DataTable632
23.6.2 以编程方式删除行634
23.6.3 基于筛选标准选择行635
23.6.4 更新行637
23.6.5 使用DataView类型638
23.6.6 最后的UI增强:呈现行号639
23.7 使用数据适配器填充DataSet/DataTable对象640
23.7.1 简单的数据适配器示例640
23.7.2 将数据库名映射为友好名称641
23.8 重新访问AutoLotDAL.dll642
23.8.1 定义初始的类类型642
23.8.2 使用SqlCommandBuilder配置数据适配器643
23.8.3 实现GetAllInventory()644
23.8.4 实现UpdateInventory()644
23.8.5 构建Windows Forms前端644
23.9 定位多表的DataSet对象646
23.9.1 准备数据适配器646
23.9.2 构建表关系648
23.9.3 更新数据库表648
23.9.4 在相关表之间定位648
23.10 Visual Studio 2008的数据访问工具651
23.10.1 可视化设计DataGridView651
23.10.2 app.config文件和Settings.Settings文件653
23.10.3 研究生成的DataSet654
23.10.4 研究生成的DataTable和DataRow656
23.10.5 研究生成的数据适配器656
23.10.6 在代码中使用生成的类型657
23.11 从UI层分离自动生成的代码659
23.12 小结661
第24章 使用LINQAPI编程662
24.1 LINQ to ADO.NET的作用662
24.2 使用LINQ to DataSet编程663
24.2.1 DataSet扩展的作用664
24.2.2 获得LINQ兼容的DataTable664
24.2.3 EnumerableRowCollection的隐式接口666
24.2.4 DataRowExtensions.Field(Of T)()扩展方法的作用666
24.2.5 通过LINQ查询填充新的DataTable667
24.3 使用LINQ to SQL编程668
24.3.1 实体类的作用668
24.3.2 DataContext类型的作用668
24.3.3 简单的LINQ to SQL示例669
24.3.4 构建强类型的DataContext670
24.3.5 详细介绍〈Table()〉和〈Column()〉属性671
24.4 使用sqlmetal.exe生成实体类672
24.4.1 研究生成的实体类673
24.4.2 使用实体类定义关系674
24.4.3 强类型的DataContext675
24.4.4 针对生成的类型编程676
24.5 使用Visual Studio 2008构建实体类677
24.5.1 插入新项678
24.5.2 更新已有的项679
24.5.3 删除已有的项679
24.6 使用LINQ to XML编程680
24.6.1 作为更好的DOM的LINQ to XML680
24.6.2 System.Xml.XLinq名称空间680
24.7 Visual Basic 2008的集成XML支持681
24.7.1 在String数据类型中存储XML字面值682
24.7.2 在XML字面值中混合编程构造682
24.8 以编程方式创建XML元素683
24.9 以编程方式创建XML文档684
24.10 通过LINQ查询生成文档686
24.11 加载和解析XML内容687
24.12 定位内存中的XML文档688
24.12.1 修改XML文档中的数据689
24.12.2 XML轴属性的作用690
24.13 小结692
第25章 Windows通信基础693
25.1 综合介绍分布式计算API693
25.1.1 DCOM的作用694
25.1.2 COM+/Enterprise Service的作用694
25.1.3 MSMQ的作用695
25.1.4 .NET Remoting的作用695
25.1.5 XML Web服务的作用696
25.1.6 命名管道、套接字和P2P698
25.2 WCF的作用699
25.2.1 WCF特性概述699
25.2.2 面向服务体系结构概述700
25.2.3 WCF概要700
25.3 研究核心WCF程序集701
25.4 Visual Studio WCF项目模板702
25.5 WCF应用程序的基本组成部分703
25.6 WCF的ABC704
25.6.1 理解WCF契约705
25.6.2 理解WCF绑定705
25.6.3 理解WCF地址708
25.7 构建WCF服务709
25.7.1 〈ServiceContract()〉属性710
25.7.2 〈OperationContract()〉属性711
25.7.3 作为可操作契约的服务类型711
25.8 驻留WCF服务712
25.8.1 在App.config文件中建立ABC712
25.8.2 针对ServiceHost类型编码713
25.8.3 主机编码选项714
25.8.4 ServiceHost类型的细节715
25.8.5 〈system.serviceModel〉元素的细节716
25.8.6 启用元数据交换717
25.9 构建WCF客户应用程序719
25.9.1 使用svcutil.exe生成代理代码719
25.9.2 使用Visual Studio 2008生成代理代码720
25.10 使用WCF Service Library项目模板721
25.10.1 构建简单的数学服务721
25.10.2 使用WcfTestClient.exe测试WCF服务722
25.10.3 使用SvcConfigEditor.exe修改配置文件722
25.11 作为Windows服务驻留WCF服务723
25.11.1 在代码中指定ABC724
25.11.2 启用MEX725
25.11.3 创建Windows服务安装程序726
25.11.4 安装Windows服务726
25.12 异步调用服务727
25.13 设计WCF数据契约729
25.13.1 使用以Web为中心的WCF Service项目模板729
25.13.2 实现服务契约731
25.13.3 *.svc文件的作用732
25.13.4 更新web.config文件732
25.13.5 测试服务733
25.14 小结734
第26章 Windows工作流基础735
26.1 定义业务过程735
26.2 WF的构件736
26.2.1 WF运行时引擎737
26.2.2 WF的核心服务737
26.2.3 WF活动简介738
26.2.4 顺序和状态机工作流739
26.3 WF的程序集、名称空间和项目741
26.3.1 .NET 3.5 WF支持741
26.3.2 Visual Studio工作流项目模板741
26.3.3 深入了解工作流的流程742
26.4 构建允许工作流的简单应用程序742
26.4.1 研究初始的工作流代码743
26.4.2 添加Code活动743
26.4.3 添加While活动744
26.5 研究WF引擎宿主代码746
26.6 在工作流中调用Web服务749
26.6.1 创建MathWebService750
26.6.2 构建WF Web服务使用者751
26.6.3 配置IfElse活动753
26.6.4 配置InvokeWebService活动755
26.6.5 与WCF服务通信757
26.7 构建可重用的WF代码库760
26.7.1 执行信用检查761
26.7.2 创建Windows Forms客户应用程序763
26.8 自定义活动概述765
26.9 小结766
第Ⅵ部分 使用Windows Forms创建桌面应用程序第27章 Windows Forms769
27.1 System.Windows.Forms名称空间概述769
27.2 使用Windows Forms类型771
27.2.1 手动创建主窗口771
27.2.2 遵守关注点分离772
27.3 Application类的功能773
27.3.1 使用Application类773
27.3.2 System.EventHandler委托774
27.4 窗体分析775
27.5 Control类的功能776
27.5.1 使用Control类778
27.5.2 响应MouseMove事件779
27.5.3 确定单击的鼠标键780
27.5.4 响应键盘事件780
27.6 Form类的功能781
27.7 用Visual Studio 2008构建Windows应用程序784
27.7.1 剖析Visual Studio 2008的Windows Forms项目785
27.7.2 在设计时实现事件787
27.7.3 StartUp Object/Main() Sub区别788
27.8 使用MenuStrip和ContextMenuStrip789
27.8.1 给MenuStrip添加文本框790
27.8.2 创建上下文菜单791
27.8.3 选中菜单项793
27.9 使用StatusStrip795
27.9.1 设计菜单系统796
27.9.2 设计StatusStrip797
27.9.3 使用Timer类型798
27.9.4 触发显示799
27.9.5 显示菜单选择提示800
27.9.6 构建“就绪”状态800
27.10 使用ToolStrip801
27.11 构建MDI应用程序804
27.11.1 构建父窗体805
27.11.2 构建子窗体806
27.11.3 产生子窗口806
27.12 小结807
第28 章使用GDI+呈现图形数据808
28.1 GDI+名称空间概述808
28.2 System.Drawing名称空间概述809
28.3 System.Drawing的实用程序类型810
28.3.1 Point和PointF类型810
28.3.2 Rectangle和RectangleF类型811
28.3.3 Region、Size和SizeF类811
28.4 理解Graphics类812
28.5 理解Paint会话813
28.5.1 使窗体的客户区失效814
28.5.2 在Paint事件处理程序之外获取Graphics对象815
28.5.3 关于Graphics对象的处理816
28.6 GDI+坐标系统817
28.6.1 默认的量度单位818
28.6.2 指定替代的量度单位818
28.6.3 指定替代的圆点819
28.7 定义颜色值821
28.8 操作字体822
28.8.1 使用字体家族823
28.8.2 使用字体和字体大小824
28.8.3 列举安装的字体826
28.8.4 FontDialog类828
28.9 System.Drawing.Drawing2D名称空间概述829
28.10 使用Pen829
28.11 使用Brush833
28.11.1 使用HatchBrush834
28.11.2 使用TextureBrush835
28.11.3 使用LinearGradientBrush836
28.12 呈现图像837
28.13 PictureBox控件的拖动和命中测试839
28.13.1 呈现图像的命中测试841
28.13.2 非矩形图像的命中测试843
28.14 理解Windows Forms资源格式845
28.14.1 System.Resources名称空间846
28.14.2 以编程的方式创建*.resx文件846
28.14.3 构建*.resources文件847
28.14.4 将*.resources文件绑定到.NET程序集中848
28.14.5 使用ResourceWriters848
28.14.6 使用Visual Studio 2008生成资源849
28.14.7 以编程的方式读取资源850
28.15 小结851
第29章 使用Windows Forms控件编程852
29.1 Windows Forms控件概述852
29.2 手动给窗体添加控件852
29.3 使用Visual Studio 2008添加控件到窗体855
29.4 使用基础控件856
29.4.1 使用Label856
29.4.2 使用TextBox857
29.4.3 使用MaskedTextBox859
29.4.4 使用Button860
29.4.5 使用CheckBox、RadioButton和GroupBox862
29.4.6 使用CheckedListBox865
29.4.7 使用ListBox866
29.4.8 使用ComboBox867
29.5 配置制表符顺序868
29.6 设置窗体的默认输入按钮869
29.7 使用较为特殊的控件869
29.7.1 使用MonthCalendar869
29.7.2 使用ToolTip871
29.7.3 使用TabControl872
29.7.4 使用TrackBar873
29.7.5 使用Panel875
29.7.6 使用UpDown控件876
29.7.7 使用ErrorProvider878
29.7.8 使用TreeView880
29.7.9 使用WebBrowser884
29.8 构建自定义Windows Forms控件885
29.8.1 创建图像886
29.8.2 构建设计时GUI886
29.8.3 实现核心CarControl886
29.8.4 定义自定义事件888
29.8.5 定义自定义特性888
29.8.6 控制动画889
29.8.7 呈现昵称889
29.9 测试CarControl类型890
29.10 构建自定义CarControl主窗体890
29.11 System.ComponentModel名称空间的功能892
29.11.1 增强CarControl的设计时显示892
29.11.2 定义默认特性和默认事件893
29.11.3 指定自定义工具箱位图894
29.12 构建自定义对话框895
29.12.1 DialogResult特性896
29.12.2 理解窗体继承897
29.13 动态定位Windows Forms控件899
29.13.1 Anchor特性899
29.13.2 Dock特性900
29.13.3 表和流程布局901
29.14 小结902
第Ⅶ部分 使用WPF创建桌面应用程序905
第30章 WPF和XAML905
30.1 WPF的动机905
30.1.1 统一不同的API906
30.1.2 通过XAML提供关注点分离906
30.1.3 提供最佳渲染模型907
30.1.4 其他以WPF为中心的特殊性能907
30.2 各种类型的WPF应用程序908
30.2.1 传统桌面应用程序908
30.2.2 基于导航的WPF应用程序908
30.2.3 XBAP应用程序909
30.2.4 Silverlight应用程序910
30.3 研究WPF程序集910
30.3.1 Application类的功能911
30.3.2 Window类的功能912
30.4 构建(XAML-Free)WPF应用程序916
30.4.1 扩展Window类的类型918
30.4.2 创建一个简单的用户界面919
30.5 Application类型的其他细节920
30.5.1 应用程序范围数据和处理命令行实参920
30.5.2 Application的Windows集合的迭代921
30.5.3 Application类型的其他事件921
30.6 Window类型的其他细节922
30.6.1 Window对象的生存期922
30.6.2 处理Window对象的关闭923
30.6.3 处理窗口级的鼠标事件924
30.6.4 处理窗口级的键盘事件925
30.6.5 构建(以XAML为中心)WPF应用程序925
30.6.6 在XAML中定义MainWindow926
30.6.7 在XAML中定义Application对象927
30.6.8 通过msbuild.exe处理XAML文件928
30.7 将标记转换成.NET程序集930
30.7.1 映射XAML到VB代码930
30.7.2 BAML的功能931
30.7.3 针对程序集的XAML处理小结932
30.8 使用代码分离文件的关注点分离933
30.9 XAML的语法935
30.9.1 XAML名称空间和XAML关键字935
30.9.2 XAML元素和XAML属性937
30.9.3 理解XAML属性元素语法938
30.9.4 理解XAML附加特性940
30.9.5 理解XAML类型转换器941
30.9.6 理解XAML标记扩展941
30.9.7 资源和数据绑定预览943
30.10 使用Visual Studio 2008构建WPF应用程序945
30.10.1 WPF项目模板945
30.10.2 改变初始窗口的名称945
30.10.3 WPF设计器946
30.11 在运行库中处理XAML:SimpleXamlPad.exe948
30.11.1 实现Loaded事件949
30.11.2 实现Button的Click事件950
30.11.3 实现Closed事件951
30.11.4 测试应用程序951
30.12 Microsoft Expression Blend的功能952
30.13 小结953
第31章 使用WPF控件编程954
31.1 WPF控件库概述954
31.1.1 WPF控件和Visual Studio 2008955
31.1.2 文档中的细节955
31.2 在XAML中声明控件956
31.3 理解依赖属性的功能958
31.3.1 研究现有的依赖属性959
31.3.2 注册依赖属性960
31.3.3 为DependencyProperty字段定义封装器特性961
31.4 理解路由事件962
31.4.1 路由冒泡事件的功能963
31.4.2 继续或者停止冒泡964
31.4.3 路由隧道事件的功能964
31.5 使用Button类型966
31.5.1 ButtonBase类型966
31.5.2 Button类型967
31.5.3 ToggleButton类型967
31.5.4 RepeatButton类型968
31.6 使用CheckBoxes和RadioButtons969
31.6.1 建立逻辑群970
31.6.2 构架GroupBox中的相关元素971
31.6.3 构架Expander中的相关元素971
31.7 使用ListBox和ComboBox类型972
31.7.1 以编程的方式填充List控件973
31.7.2 添加专用内容974
31.7.3 确定当前选择975
31.7.4 确定内嵌内容的当前选择976
31.8 使用文本区域977
31.8.1 使用TextBox类型977
31.8.2 使用PasswordBox类型978
31.9 使用窗格控制内容布局979
31.9.1 WPF的核心窗格类型980
31.9.2 在Canvas窗格内定位内容981
31.9.3 在WrapPanel窗格内定位内容983
31.9.4 在StackPanel窗格内定位内容984
31.9.5 在Grid窗格内定位内容985
31.9.6 在DockPanel窗格内定位内容987
31.9.7 启用Panel类型的滚动行为987
31.10 使用内嵌窗格构建窗口的构架988
31.10.1 构建菜单系统989
31.10.2 构建工具栏990
31.10.3 构建状态条991
31.10.4 结束UI设计991
31.10.5 结束实现992
31.11 理解WPF控件命令993
31.11.1 内部控件命令对象993
31.11.2 连接命令到命令特性994
31.11.3 连接命令到专用UI元素995
31.12 理解WPF数据绑定模型996
31.12.1 初观数据绑定997
31.12.2 DataContext特性998
31.12.3 Mode特性998
31.13 使用IValueConverter的数据转换999
31.14 绑定自定义对象1001
31.14.1 使用Observable Collection(Of T)类型1003
31.14.2 创建自定义数据模板1004
31.15 绑定UI元素到XML文档1005
31.15.1 构建自定义对话框1006
31.15.2 分配DialogResult值1007
31.15.3 获得当前选择1008
31.15.4 显示自定义对话框1008
31.16 小结1009
第32章 WPF二维图形渲染、资源和主题1010
32.1 WPF图形渲染服务哲学1010
32.1.1 WPF图形渲染选项1011
32.1.2 选择合适的方法1016
32.2 探索Shape派生类型1016
32.3 使用WPF画笔1019
32.3.1 用单色构建画笔1019
32.3.2 使用渐变画笔1020
32.3.3 ImageBrush类型1021
32.4 使用WPF笔1021
32.5 探索Drawing派生类型1022
32.5.1 几何类型的功能1022
32.5.2 剖析简单的绘制几何1023
32.5.3 DrawingImage包含的Drawing类型1024
32.5.4 DrawingBrush中包含的Drawing类型1024
32.5.5 更加复杂的Drawing几何1025
32.6 UI转换的功能1026
32.6.1 Transform派生类型1026
32.6.2 应用转换1027
32.7 理解WPF的动画服务1028
32.7.1 Animation后缀类型的功能1028
32.7.2 Timeline基类的功能1029
32.7.3 在VB代码中编写动画1029
32.7.4 控制动画的调步1031
32.7.5 反向和循环动画1031
32.7.6 在XAML中编写动画1032
32.7.7 Animation关键帧的功能1033
32.8 理解WPF资源系统1036
32.8.1 使用二进制资源1036
32.8.2 对象(又称为逻辑)资源的功能1037
32.9 为WPF控件定义并应用样式1037
32.9.1 使用内联样式1038
32.9.2 使用命名样式1039
32.9.3 重写样式设置1040
32.9.4 使现有样式成为子类1040
32.9.5 扩展样式1041
32.9.6 收缩样式1042
32.9.7 隐式地分配样式1042
32.9.8 用触发器定义样式1042
32.9.9 以编程的方式分配样式1044
32.10 使用模板更改控件的UI1045
32.10.1 构建自定义模板1046
32.10.2 添加触发器到模板1047
32.10.3 合并模板到样式中1048
32.11 小结1050
第Ⅷ部分 用ASP.NET构建Web应用程序第33章 构建ASP.NET Web页面1053
33.1 HTTP的功能1053
33.1.1 HTTP请求/响应循环1053
33.1.2 HTTP是一种无状态协议1054
33.2 理解Web应用程序和Web服务器1054
33.2.1 IIS虚拟目录的功能1055
33.2.2 ASP.NET开发服务器1056
33.3 HTTP的功能1057
33.3.1 HTML文档结构1057
33.3.2 HTML窗体开发1058
33.3.3 构建基于HTML的用户界面1059
33.4 客户端脚本的功能1061
33.4.1 客户端脚本示例1062
33.4.2 验证default.htm窗体数据1062
33.5 提交窗体数据(获取和提交)1063
33.6 构建传统ASP页面1063
33.7 传统ASP的问题1065
33.7.1 ASP.NET 1.x的主要优点1065
33.7.2 ASP.NET 2.0的主要改进1066
33.7.3 主要的ASP.NET 3.5 Web的改进1066
33.8 ASP.NET名称空间1066
33.9 ASP.NET Web页面代码模型1067
33.9.1 构建以数据为中心的单文件测试页面1068
33.9.2 使用代码分离页面模型1073
33.10 ASP.NET网站目录结构细节1076
33.10.1 引用程序集1076
33.10.2 App_Code文件夹的功能1077
33.11 ASP.NET页面编译周期1077
33.11.1 单文件页面的编译周期1078
33.11.2 多文件页面的编译周期1078
33.12 页面类型的继承链1080
33.13 与入站HTTP请求进行互操作1081
33.13.1 获得浏览器统计数据1082
33.13.2 访问引入的窗体数据1082
33.13.3 IsPostBack特性1083
33.14 与出站HTTP响应进行互操作1084
33.14.1 发送HTML内容1084
33.14.2 重定向用户1085
33.15 ASP.NET Web页面的生命周期1085
33.15.1 AutoEventWireup属性的功能1087
33.15.2 Error事件1088
33.16 web.config文件的功能1089
33.17 小结1091
第34章 ASP.NET Web控件、主题和Master页面1092
34.1 理解Web控件的实质1092
34.1.1 限定服务器端的事件处理1093
34.1.2 AutoPostBack特性1093
34.1.3 System.Web.UI.Control类型1094
34.1.4 枚举已包含的控件1095
34.1.5 动态添加(或者移除)控件1096
34.2 System.Web.UI.WebControls.WebControl类型的关键成员1097
34.3 ASP.NET Web控件的类别1098
34.4 构建ASP.NET网站1099
34.4.1 使用Master页面1100
34.4.2 定义Default.aspx内容页面1105
34.4.3 设计目录内容页面1106
34.4.4 设计Build-a-Car内容页面1110
34.5 验证控件的功能1111
34.5.1 RequiredFieldValidator1113
34.5.2 RegularExpressionValidator1113
34.5.3 RangeValidator1114
34.5.4 CompareValidator1114
34.5.5 创建验证小结1115
34.6 使用主题1115
34.6.1 理解*.skin文件1116
34.6.2 应用站点范围的主题1117
34.6.3 在页面级应用主题1118
34.6.4 SkinID特性1118
34.6.5 以编程的方式分配主题1119
34.7 小结1120
第35章 ASP.NET状态管理技术1122
35.1 发布状态1122
35.2 ASP.NET状态管理技术1124
35.3 理解ASP.NET查看状态的功能1124
35.3.1 示范查看状态1125
35.3.2 添加自定义查看状态数据1126
35.3.3 关于控件状态的简述1127
35.4 Global.asax文件的功能1127
35.4.1 全局最后机会异常事件处理程序1129
35.4.2 HttpApplication基类1129
35.5 理解应用程序/会话的区别1130
35.5.1 维护应用程序级状态数据1130
35.5.2 修改应用程序数据1133
35.5.3 处理Web应用程序的关闭1133
35.6 使用应用程序缓存1134
35.6.1 使用数据缓存1134
35.6.2 修改*.aspx文件1137
35.7 维护会话数据1138
35.7.1 其他HttpSessionState成员1140
35.7.2 理解Cookie1141
35.7.3 创建Cookie1142
35.7.4 读取引入的Cookie数据1143
35.8 〈sessionState〉元素的功能1144
35.8.1 在ASP.NET会话状态服务器上存储会话数据1144
35.8.2 在专用数据库中存储会话数据1145
35.9 理解ASP.NET配置文件API1146
35.9.1 ASPNETDB数据库1146
35.9.2 在web.config中定义用户配置文件1147
35.9.3 以编程的方式访问配置文件数据1148
35.9.4 分组配置文件数据并保留自定义对象1151
35.10 小结1152
热门推荐
- 2866713.html
- 2674095.html
- 2086944.html
- 924563.html
- 3544184.html
- 779410.html
- 3264757.html
- 334299.html
- 3819669.html
- 3437401.html
- http://www.ickdjs.cc/book_2315768.html
- http://www.ickdjs.cc/book_3117661.html
- http://www.ickdjs.cc/book_3193834.html
- http://www.ickdjs.cc/book_3895015.html
- http://www.ickdjs.cc/book_620738.html
- http://www.ickdjs.cc/book_3002750.html
- http://www.ickdjs.cc/book_818240.html
- http://www.ickdjs.cc/book_890023.html
- http://www.ickdjs.cc/book_412600.html
- http://www.ickdjs.cc/book_3453464.html