第1篇 开发环境及C#语言简介 2
第1章 Visual Studio 2008介绍 2
1.1 .NET概述 2
1.1.1 .NET发展史 2
1.1.2中间语言 3
1.1.3垃圾收集器 4
1.2 .NET Framework概述 5
1.2.1 .NET Framework概述 5
1.2.2公共语言运行时 7
1.2.3基类库 7
1.2.4公共语言运行规范 9
1.3 Visual Studio 2008的新特性 9
1.4 Visual Studio 2008开发环境介绍 10
1.4.1 Visual Studio 2008的安装 10
1.4.2项目模板 12
1.4.3网站模板 14
1.4.4文件模板 15
1.4.5 Visual Studio 2008 IDE概述 16
1.4.6 Visual Studio 2008的开发工具栏和菜单栏 17
1.4.7对象浏览器和类视图 20
1.4.8工具箱和属性窗口 21
1.5定制环境 22
1.5.1修改字体和颜色 23
1.5.2定制帮助位置 23
1.5.3在项目和解决方案中保存文件 23
1.5.4任务列表和注释 24
1.5.5命令窗口 25
1.5.6行号与代码折叠 26
1.5.7窗口管理 27
1.5.8调试与生成 28
1.6学会使用MSDN帮助系统 30
1.7 Visual Studio 2008编程示例 31
1.8 本章总结 33
第2章 C#简介 35
2.1 C#与.NET的关系 35
2.2 C#的主要特点 35
2.2.1简单性 36
2.2.2类型统一性 39
2.2.3面向对象性 39
2.2.4类型安全性 40
2.2.5兼容性 41
2.3 C#与其他语言对比 42
2.4 C#与VB.NET 42
2.4.1代码显示 42
2.4.2数据类型和变量 43
2.4.3类、数据类型、函数以及接口 44
2.4.4操作符与表达式 44
2.4.5控制流程语言 45
2.4.6 On Error语句 47
2.4.7关键字 47
2.4.8访问修饰符 48
2.4.9语法 48
2.4.10 C#与VB.NET代码比较 48
2.5 C#与C++ 52
2.5.1托管的环境 52
2.5.2.NET对象 52
2.5.3 C#的语句 52
2.5.4 C#中取消的要素 53
2.5.5操作符重载 53
2.5.6头文件 53
2.5.7程序书写 53
2.5.8指针 54
2.5.9虚函数 54
2.5.10 C#与C++代码比较 56
2.6 C#与Java 57
2.6.1数据类型(Data Type) 57
2.6.2类(Class) 58
2.6.3属性(Property) 59
2.6.4事件(Event)、指针(Pointer)与界面 60
2.6.5 C#与Java代码比较 60
2.7本章总结 61
第2篇 C#程序设计基础 64
第3章 C#数据类型 64
3.1数据类型 64
3.2值类型 65
3.2.1值类型概述 65
3.2.2整型 66
3.2.3字符型 67
3.2.4浮点型 68
3.2.5小数型 69
3.2.6布尔型 69
3.2.7 C#的数值类型 69
3.3引用类型 70
3.3.1引用类型概述 70
3.3.2类类型 71
3.3.3对象类型 71
3.3.4字符串类型 71
3.3.5接口类型 73
3.4类型转换 75
3.4.1类型转换概述 75
3.4.2显式转换 76
3.4.3隐式转换 76
3.4.4两种数值类型之间的转换 77
3.4.5数值类型和字符串之间的转换 78
3.4.6字符的ASCII码和Unicode码之间的转换 80
3.4.7字符串和字符数组之间的转换 81
3.4.8字符串和字节数组之间的转换 83
3.4.9数值类型和字节数组之间的转换 84
3.4.10各个类型之间的强制转换 85
3.5复杂数据类型 86
3.5.1枚举概述 86
3.5.2枚举编程示例 87
3.5.3结构概述 88
3.5.4结构编程示例 89
3.5.5结构中的方法 90
3.5.6结构与类的区别 92
3.5.7结构的适用范围 92
3.6本章总结 92
第4章 变量与表达式 93
4.1常量与变量 93
4.1.1常量概述 93
4.1.2静态常量 93
4.1.3动态常量 94
4.1.4编程中的常量 94
4.1.5变量概述 95
4.1.6变量的实质 96
4.1.7变量的分类 97
4.1.8变量的命名规范 99
4.2运算符与表达式 100
4.2.1运算符的分类 100
4.2.2算术运算符 100
4.2.3关系运算符 103
4.2.4一般赋值运算符 104
4.2.5复合赋值运算符 105
4.2.6逻辑运算符 107
4.2.7二进制计算 110
4.2.8位运算符 111
4.2.9三元运算符 114
4.2.10自增和自减运算符 114
4.2.11运算符的优先级 116
4.3关键字 117
4.4本章总结 117
第5章 程序控制语言 118
5.1 C#语句分类 118
5.2选择语句 119
5.2.1选择语句概述 119
5.2.2 if语句简介 119
5.2.3单条选择if语句 120
5.2.4 if…else…语句 121
5.2.5复杂if…else…语句 122
5.2.6嵌套语句 124
5.2.7 switch语句概述 126
5.2.8 switch语句编程示例 127
5.3循环语句 128
5.3.1 do循环 128
5.3.2 while循环 129
5.3.3 for循环 130
5.3.4 foreach循环语句 132
5.4跳转语句 133
5.4.1 break语句 133
5.4.2 continue语句 135
5.4.3 return语句 136
5.4.4 goto语句与标志符 137
5.4.5 goto语句与switch语句 138
5.4.6 goto语句与嵌套循环语句 139
5.4.7 throw语句 141
5.5注释语句 142
5.5.1普通注释语句 143
5.5.2利用注释语句生成帮助文档 144
5.6本章总结 145
第6章 函数与方法 146
6.1定义和使用函数 146
6.1.1函数与方法 146
6.1.2函数的表达形式 146
6.2参数与返回值 147
6.2.1参数 147
6.2.2值参数(value parameter) 147
6.2.3引用参数(reference parameter) 148
6.2.4输出参数(output parameter) 151
6.2.5数组参数(oarray parameter) 152
6.2.6利用返回值获取数值 153
6.2.7利用返回值判断逻辑 155
6.3变量的作用域 157
6.3.1局部变量 157
6.3.2全局变量 159
6.4 Main()函数 160
6.5常用函数 163
6.6本章总结 165
第3篇 C面向对象简介 168
第7章 类和对象 168
7.1类和对象简述 168
7.2类的定义 169
7.2.1类概述 169
7.2.2访问类型 171
7.2.3成员方法 172
7.3创建对象 173
7.3.1构造函数 173
7.3.2成员变量的初始化 175
7.3.3拷贝构造函数 177
7.3.4关键字this 178
7.4静态成员的使用 179
7.4.1静态成员概述 179
7.4.2调用静态方法 179
7.4.3使用静态构造函数 180
7.4.4使用私有构造函数 181
7.4.5使用静态成员变量 181
7.5对象的销毁 182
7.5.1 C#中的析构函数 182
7.5.2 Dispose()方法 183
7.5.3 using声明 184
7.6参数传递 184
7.6.1引用传递 185
7.6.2 out类型参数 187
7.7方法和构造函数的重写 190
7.8类的属性 193
7.8.1类的属性概述 193
7.8.2 get访问器 195
7.8.3 set访问器 195
7.9 Readonly类型变量 196
7.10本章总结 198
第8章 继承与多态 199
8.1继承 199
8.1.1继承 199
8.1.2 C#中的继承 200
8.1.3继承中的构造函数调用 204
8.1.4 base关键字 205
8.1.5 Protected访问类型 207
8.1.6 sealed关键字 209
8.2万类之根——Object类 209
8.3多态 211
8.3.1多态概述 211
8.3.2在基类与子类中定义同名方法 212
8.3.3方法重写——virtual和override关键字的使用 213
8.3.4 new关键字 215
8.4对象类型转换——Up-casting和Down-casting 216
8.4.1 Up-casting类型转换 216
8.4.2 Down-casting类型转换 217
8.4.3 is和as关键字 217
8.5装箱和拆箱 218
8.6本章总结 219
第9章 抽象类和接口 220
9.1抽象类 220
9.2接口 223
9.2.1接口概述 223
9.2.2实现多个接口 226
9.2.3指定方法的实现 228
9.2.4使用is和as操作符实现接口转换 230
9.2.5接口间的继承 231
9.3本章总结 233
第10章 数组与集合 234
10.1多维数组 234
10.1.1多维数组概述 234
10.1.2多维数组的实例化和访问 235
10.1.3变长数组的实例化和访问 237
10.2 foreach循环 239
10.3集合 242
10.3.1 ArrayList类 243
10.3.2 Stack类 245
10.3.3 Queue类 247
10.4字典类型集合 249
10.4.1 Hashtable类概述 249
10.4.2创建Hashtable集合 249
10.4.3向Hashtable集合中添加元素 250
10.4.4从Hashtable集合中获取元素 250
10.4.5从Hashtable集合中移除指定的元素 250
10.4.6获取Hashtable集合的元素与键值 251
10.4.7在Hashtable集合中检索元素 252
10.4.8 SortedList类概述 252
10.4.9 SortedList类方法介绍 253
10.4本章总结 255
第11章 代理和事件 256
11.1代理 256
11.1.1代理概述 256
11.1.2方法的类型和标识 257
11.1.3代理引用 257
11.1.4 .NET Framework中的代理 261
11.1.5代理作方法的参数 261
11.1.6多重代理概述 263
11.1.7多重代理的实现 263
11.1.8移除多重代理指向的方法 265
11.2事件和事件处理 266
11.2.1 C#中的事件处理 266
11.2.2事件举例——时钟事件 267
11.2.3多重事件 270
11.2.4利用事件传递数据 271
11.3本章总结 273
第4篇 Windows程序编程 276
第12章 Windows应用程序概述 276
12.1 Windows应用程序 276
12.1.1 Windows应用程序概述 276
12.1.2 Windows应用程序的创建 276
12.1.3 Program.cs文件 277
12.1.4 Forml.cs文件 277
12.1.5 Forml.Designer.cs文件 278
12.2 Windows应用程序窗体 279
12.2.1 Windows应用程序窗体概述 279
12.2.2 Form类属性介绍 279
12.2.3 Form类常用事件介绍 280
12.3为窗体添加控件 281
12.3.1控件概述 281
12.3.2控件的基本属性介绍 282
12.3.3控件常用公共事件介绍 282
12.3.4向窗体添加控件 283
12.3.5控件的布局与停靠 283
12.4 Windows应用程序编程示例 285
12.4.1创建一个窗体 285
12.4.2修改窗体属性 285
12.4.3向窗体添加控件 286
12.4.4向控件事件添加事件处理程序 286
12.4.5编译和运行项目 286
12.5本章总结 287
第13章 Visual Studio 2008控件介绍 288
13.1文本编辑控件 288
13.1.1 TextBox控件概述 288
13.1.2读取或设置TextBox控件的内容 289
13.1.3 TextBox控件的多行文本输入 290
13.1.4 TextBox控件的文本选择 291
13.1.5密码框设置 292
13.1.6 TextBox控件的有效性验证 293
13.1.7 RichTextBox控件概述 293
13.1.8 RichTextBox控件的文本选择 294
13.1.9 RichTextBox控件的撤销操作 295
13.1.10 RichTextBox控件的拖放操作 296
13.1.11 RichTextBox控件的文本格式设置 297
13.1.12 RichTextBox控件的文本缩进 299
13.1.13 RichTextBox控件中的超链接 300
13.1.14 RichTextBox控件的文件操作 301
13.2文本显示控件 302
13.2.1 Label控件 302
13.2.2 LinkLabel控件概述 303
13.2.3 LinkCollection与Link类 305
13.2.4 LinkLabel控件编程示例 305
13.3容器控件 307
13.3.1 Panel控件 307
13.3.2 GroupBox控件 310
13.3.3 TabControl控件概述 311
13.3.4 TabControl控件外观设计 312
13.3.5 TabControl控件中标签页的选择 315
13.3.6 TabControl控件中的标签页 317
13.3.7 TableLayoutPanel控件概述 318
13.3.8 TableLayoutPanel控件的外观设置 319
13.3.9 TableLayoutPanel中的控件 321
13.4值设置控件 323
13.4.1 CheckBox控件 323
13.4.2 RadioButton控件 326
13.5本章总结 327
第14章 列表选择控件介绍 328
14.1 ListBox控件 328
14.1.1 ListBox控件概述 328
14.1.2 ListBox控件子项的编辑 328
14.1.3 ListBox控件行为设置 330
14.1.4 ListBox控件选择模式设置 332
14.1.5 ListBox控件外观设置 334
14.1.6 ListBox控件中的排序 335
14.1.7 ListBox控件的绘制 335
14.1.8 ListBox控件中的查找 336
14.1.9 ListBox控件的常用方法 338
14.2 ComboBox控件 340
14.2.1 ComboBox控件概述 340
14.2.2 ComboBox下拉框样式设置 340
14.2.3 ComboBox控件的自动补齐功能 342
14.2.4 ComboBox控件的自动补齐数据源 342
14.2.5 ComboBox控件的自动补齐方式 344
14.2.6 ComboBox控件的常见事件 345
14.2.7 ComboBox控件的子项选择 346
14.2.8 ComboBox控件的子项绘制 348
14.3 CheckedListBox控件 350
14.3.1 CheckedListBox控件概述 350
14.3.2 CheckedListBox控件编程示例 352
14.4 ListView控件 356
14.4.1 ListView控件概述 356
14.4.2 ListView控件视图 357
14.4.3 ListView任务窗体 358
14.4.4 ListView控件中的ImageList 359
14.4.5 ListView控件中的子项 361
14.4.6 “Details”视图模式 362
14.4.7 ListView控件的子项分组设置 363
14.4.8 ListView控件的拖曳操作 365
14.4.9 ListView控件的文本匹配和位置搜索 367
14.5 TreeView控件 368
14.5.1 TreeView控件概述 368
14.5.2编辑TreeView控件中的节点 369
14.5.3在TreeView控件中进行选择 371
14.5.4 TreeView控件的实际应用 373
14.5.5 TreeView控件的ImageList 373
14.5.6 TreeView控件的展开与折叠 374
14.5.7 TreeView控件的文本编辑 376
14.5.8 TreeView控件中的拖曳操作 377
14.6本章总结 380
第15章 数据显示控件 381
15.1 DataGridView控件介绍 381
15.1.1 DataGridView控件简介 381
15.1.2 DataGridView控件用户权限设置 383
15.1.3 DataGridView控件应用示例 385
15.1.4 DataGridView控件的数据源设置 386
15.1.5向DataGridView控件添加列 387
15.1.6冻结DataGridView控件中的列 388
15.1.7编辑DataGridView控件中的列 389
15.2 DataGridView的相关类关系 389
15.2.1 DataGridViewElement对象模型 390
15.2.2 DataGridViewCell对象模型 390
15.2.3 DataGridViewColumn控件对象模型 391
15.2.4 DataGridViewRow控件对象模型 391
15.3 DataGridView类的使用方法 392
15.3.1单元格边框样式 392
15.3.2 DataGridView控件边框设置 394
15.3.3 DataGridView控件单元格边框设置 394
15.3.4特殊单元格边框设置 396
15.3.5单元格形式设计 397
15.3.6单元格设置优先级说明 400
15.3.7 DataGridView控件外观设置 402
15.3.8 DataGridView控件行为设置 402
15.3.9 DataGridView控件的其他属性 403
15.3.10 AutoResizeColumn方法 406
15.3.11 AutoResizeColumns方法 407
15.3.12 AutoResizeColumnHeadersHeight方法 409
15.3.13 AutoResizeRowHeadersWidth方法 409
15.3.14 DataGridView控件的其他方法 411
15.4 DataGridView的相关类 411
15.4.1 DataGridViewColumn类的排序 411
15.4.2 DataGridViewTextBoxColumn 412
15.4.3 DataGridViewCheckBoxColumn 414
15.4.4 DataGridViewImageColumn 415
15.4.5 DataGridViewButtonColumn 417
15.4.6 DataGridViewComboBoxColumn 418
15.4.7 DataGridViewLinkColumn 421
15.5本章总结 422
第16章 通用对话框 423
16.1消息对话框 423
16.1.1消息对话框概述 423
16.1.2 Show方法 424
16.1.3消息对话框按键设置 425
16.1.4获取用户响应 426
16.1.5消息对话框图标设置 428
16.1.6消息对话框编程示例 429
16.2文件对话框 432
16.2.1 OpenFileDialog组件概述 432
16.2.2“打开”文件对话框弹出 433
16.2.3“打开”文件对话框中的快捷方式 433
16.2.4“打开”文件对话框中的多项选择 434
16.2.5“打开”文件对话框中的文件类型 435
16.2.6“打开”文件对话框中的外观设置 437
16.2.7“打开”文件对话框中的检查设置 439
16.2.8 SaveFileDialog组件概述 440
16.2.9 SaveFileDialog组件编程示例 441
16.2.10“另存为”对话框的文件确认 443
16.2.11 FolderBrowserDialog组件概述 444
16.2.12 FolderBrowserDialog组件编程示例 444
16.3字体选择对话框 447
16.3.1 FontDialog组件概述 447
16.3.2 FontDialog组件编程示例 448
16.4颜色选择对话框 450
16.4.1 ColorDialog组件概述 450
16.4.2 ColorDialog组件编程示例 452
16.5打印相关对话框 453
16.5.1 PrintDocument组件概述 453
16.5.2 PrintDocument组件编程示例 454
16.5.3 PageSetupDialog组件概述 456
16.5.4 PageSetupDialog组件编程示例 457
16.5.5 PrintPreviewDialog组件 458
16.5.6 PrintPreviewDialog组件编程示例 459
16.5.7 PrintDialog组件 462
16.6 本章总结 463
第17章 其他常用控件 465
17.1计时器组件 465
17.1.1 Timer件概述 465
17.1.2 Timer组件的触发 465
17.1.3秒表功能设置 467
17.1.4 Timer组件编程示例 469
17.2图形控件 470
17.2.1 PictureBox控件概述 470
17.2.2 PictureBox控件的图片显示方式 471
17.2.3 PictureBox控件中图片的更新 473
17.2.4 ImageList组件概述 473
17.2.5 ImageList组件适用控件 475
17.3菜单控件 475
17.3.1 MenuStrip控件概述 475
17.3.2添加菜单项 476
17.3.3菜单项功能设置 479
17.3.4 ToolStrip控件概述 481
17.3.5 ToolStripItem类型介绍 482
17.3.6 ToolStrip控件行为设置 484
17.3.7 ToolStripComboBox的自动填充 486
17.3.8 ToolStrip控件外观设置 486
17.3.9 ContextMenuStrip控件 487
17.4本章总结 488
第18章 Windows应用程序的部署 489
18.1部署方案简要介绍 489
18.1.1 ClickOnce部署方案概述 489
18.1.2 Windows Installer部署方案概述 490
18.2 ClickOnce部署 490
18.2.1创建Widows应用程序 490
18.2.2启动“发布向导” 491
18.2.3 URL地址设置 492
18.2.4应用程序名称设置 494
18.2.5应用程序文件内容设置 494
18.2.6应用程序下载组设置 495
18.2.7应用程序系统必备设置 495
18.2.8访问权限设置 496
18.2.9发布方式选择 497
18.2.10发布到网站 497
18.2.11发布到共享文件夹 499
18.2.12发布到CD-ROM 500
18.2.13施行发布 501
18.2.14安装并运行 503
18.3 Windows Installer部署 504
18.3.1创建Windows应用程序 504
18.3.2创建部署项目 504
18.3.3文件系统编辑器 505
18.3.4创建安装程序 506
18.3.5添加快捷方式 507
18.3.6设置Windows Installer部署属性 507
18.3.7设置Windows Installer应用程序注册表项 508
18.3.8安装过程中的默认对话框 508
18.3.9“欢迎使用”用户界面对话框 510
18.3.10“选择安装文件夹”用户界面对话框 510
18.3.11“确认安装”用户界面对话框 511
18.3.12“进度”用户界面对话框 512
18.3.13“安装完成”用户界面对话框 512
18.3.14安装过程中的自定义默认对话框 513
18.3.15“单选按钮”用户界面对话框 514
18.3.16“复选框”用户界面对话框 515
18.3.17“文本框”用户界面对话框 516
18.3.18“客户信息”用户界面对话框 517
18.3.19“许可协议”用户界面对话框 518
18.3.20“自述文件”用户界面对话框 518
18.3.21“注册用户”用户界面对话框 519
18.3.22部署应用程序 519
18.4部署方案比较 519
18.5本章总结 520
第5篇 C#的高级特征和工具 522
第19章 异常处理 522
19.1异常的基本概念 522
19.2 C#和.NET中的异常 524
19.2.1使用try…catch…finally结构处理异常 524
19.2.2异常类的消息和堆栈记录属性 526
19.2.3 finally语段 528
19.3多异常的捕获 530
19.3.1多异常简介 530
19.3.2使用多个catch语段的要点 533
19.3.3 C#中异常处理的其他要点 534
19.4定义用户异常 535
19.5本章总结 537
第20章 文件系统与流 538
20.1软件系统环境相关信息 538
20.1.1获得应用程序运行环境的信息——System.Environment类 538
20.1.2 System.Environment类的应用举例 538
20.1.3获得各种Windows标准文件夹的路径——Enviroment.GetFolderPath() 540
20.2对文件进行操作 542
20.2.1使用System.IO.File和System.IO.FileInfo类对文件进行操作 543
20.2.2 System.IO.File类 543
20.2.3 System.IO.FileInfo类 544
20.3对文件夹进行操作 546
20.3.1使用System.IO.Directory和System.IO.DirectoryInfo类对目录进行操作 546
20.3.2 System.IO.Directory类 546
20.3.3 System.IO.DirectoryInfo类 548
20.4流文件概述 550
20.4.1流简介 550
20.4.2 Stream类简介 550
20.5使用流对文件进行读写 551
20.5.1使用System.IO.FileStream类对文件进行读写 551
20.5.2 System.IO.FileStream类使用示例 552
20.5.3使用BinaryReader和Binary Writer类对文件进行读写 554
20.5.4使用StreamReader和StreamWriter类对文本文件进行读写 556
20.6序列化和反序列化 556
20.6.1对象序列化简介 556
20.6.2格式器 557
20.6.3对象序列化使用示例一 557
20.6.4对象序列化使用示例二 559
20.6.5对象序列化使用示例三 562
20.7异步读取数据 564
20.7.1异步读取数据概述 564
20.7.2异步读取数据使用示例 565
20.8本章总结 566
第21章 可扩展标记语言 567
21.1 XML简介 567
21.1.1文档对象模型 568
21.1.2 XML Path Language 569
21.1.3 XSL 569
21.1.4 XML Schemas 570
21.1.5 .NET中的XML相关类 570
21.2使用XML DOM进行编程 571
21.2.1创建XML文档 573
21.2.2向XML文档添加元素 574
21.2.3更新XML文档中的元素 575
21.2.4删除XML文档中的元素 578
21.2.5加载和保存XML文档 579
21.3 XML和相关的数据 580
21.3.1 XML与DataSet类 583
21.3.2 XML模式与DataSet类 585
21.3.3遍历DataSet类中的关系 587
21.4 XPath 590
21.4.1 XPath简介 590
21.4.2 XPath使用示例 590
21.4.3 XPath示例讲解 594
21.5 XSL转换 595
21.5.1 XSL转换示例一 596
21.5.2 XSL转换示例讲解 599
21.5.3 XSL转换示例二 600
21.6本章总结 602
第22章 多线程编程 603
22.1多线程编程原理 603
22.1.1多线程编程示例一 603
22.1.2多线程编程示例二 604
22.1.3多线程编程示例三 605
22.1.4线程的工作原理 607
22.1.5线程和进程 607
22.1.6何时需要使用多线程 608
22.1.7何时不要使用多线程 608
22.2创建并开始一个线程 608
22.2.1创建并开始一个线程 608
22.2.2向ThreadStart传递参数 610
22.2.3命名线程 612
22.2.4前台和后台线程 612
22.2.5线程属性 613
22.2.6异常处理 613
22.3线程同步 615
22.3.1线程阻塞的方法 615
22.3.2 Sleeping和Spinning 616
22.3.3 Joining一个线程 617
22.4线程安全 617
22.4.1线程安全概述 618
22.4.2选择一个同步对象 619
22.4.3嵌套锁 620
22.4.4何时上锁 621
22.4.5效率考虑 622
22.4.6线程安全与.NET Framework 622
22.5中断和取消 624
22.5.1中断 624
22.5.2取消 625
22.6线程状态 625
22.7等待处理 626
22.7.1自动设置方法简述 626
22.7.2自动设置方法示例一 627
22.7.3自动设置方法示例二 628
22.7.4自动设置方法示例三 630
22.7.5手动设置方法 632
22.7.6互斥量 632
22.7.7信号量 633
22.7.8 WaitAny、WaitAll和SignalAndWait方法 634
22.8同步性作用域 634
22.9套间线程和Windows窗体 637
22.9.1套间线程概述 637
22.9.2详解套间模型 638
22.9.3 Control.Invoke方法 638
22.10 BackgroundWorker组件 638
22.10.1 BackgroundWorker组件概述 638
22.10.2 BackgroundWorker组件编程示例一 639
22.10.3 BackgroundWorker组件编程示例二 640
22.10.4 BackgroundWorker组件编程示例三 642
22.11 ReaderWriterLockSlim类和ReaderWriterLock类 643
22.11.1用于读/写操作的锁的概述 643
22.11.2 ReaderWriterLockSlim类 644
22.11.3用于读/写操作的锁的使用说明 645
22.12线程池 647
22.13异步代理 648
22.14计时器 650
22.15局部存储 652
22.16本章总结 652
第6篇 Web数据库开发 654
第23章 数据库基础知识 654
23.1 SQL Server概述 654
23.2数据表的各种操作 655
23.2.1创建、修改和删除表 655
23.2.2操纵表中的数据 656
23.2.3主键约束 659
23.2.4外键约束 660
23.2.5唯一性约束 660
23.2.6 CHECK约束 661
23.2.7默认约束 661
23.3存储过程 661
23.3.1创建存储过程 662
23.3.2执行和删除存储过程 663
23.3.3 SQL Server 2005中的存储过程向导 663
23.4触发器 665
23.4.1创建和使用触发器 665
23.4.2 SQL Server 2005中的触发器向导 666
23.5本章总结 667
第24章 ADO.NET数据库编程 668
24.1 ADO.NET介绍 668
24.1.1什么是ADO.NET 668
24.1.2 System.Data命名空间 669
24.2 DataSet和DataTable类 670
24.2.1 DataTable类成员 670
24.2.2创建DataTable 672
24.2.3遍历DataTable的记录 675
24.2.4接受和回滚DataTable的更改 677
24.2.5 DataSet类成员 680
24.2.6使用DataSet类 681
24.2.7接受和回滚DataSet的更改 686
24.3 SQL Server数据库访问 687
24.3.1数据库访问步骤 687
24.3.2用SqlConnection连接数据库 688
24.3.3用SqlCommand执行SQL命令 691
24.3.4用SqlDataReader读取数据库记录 694
24.3.5用SqlDataAdapter获取数据库记录 697
24.3.6用SqlDataAdapter更改数据库记录 700
24.4 Access数据库访问 702
24.4.1 System.Data.OleDb命名空间 703
24.4.2 Access数据库访问 703
24.5使用数据库访问控件 704
24.5.1用DataGridView控件修改记录 704
24.5.2用BindingNavigator控件导航记录 707
24.6本章总结 707
第25章 ASP.NET技术入门 709
25.1概述 709
25.1.1认识ASP.NET 709
25.1.2 Web命名空间 710
25.1.3创建Web应用程序 710
25.2使用ASP.NET控件 712
25.2.1用TextBox控件实现文本输入 712
25.2.2用Button控件实现按钮 714
25.2.3用HyperLink控件实现超链接 716
25.2.4用DropDownList、 ListBox等实现列表 717
25.2.5用Menu控件实现菜单导航 718
25.3网页开发实例 720
25.3.1设计留言本网站 721
25.3.2欢迎页面实现 722
25.3.3添加留言页面实现 723
25.3.4查看留言页面实现 727
25.3.5发布留言板网站 730
25.4本章总结 732
第26章 服务器端控件详解 733
26.1概述 733
26.1.1认识服务器控件 733
26.1.2服务器控件与HTML控件的区别 733
26.2数据操作控件 734
26.2.1使用SqlDataSource控件连接数据 734
26.2.2使用SqlDataSource控件连接到数据库 735
26.2.3使用GridView控件显示数据库中的数据 740
26.2.4使用DetailsView控件显示特定记录 742
26.3验证控件 746
26.3.1限制空字段控件RequiredFieldValidator 746
26.3.2比较两个字段控件CompareValidator 747
26.3.3检查指定范围控件RangeValidator 750
26.3.4表达式验证控件RegularExpressionValidator 750
26.3.5自定义验证控件CustomValidator 751
26.3.6错误信息汇总控件ValidationSummary 754
26.4用户控件 756
26.5本章总结 759
第7篇 .NET 3.5的新增功能 762
第27章 WPF框架 762
27.1 WPF概述 762
27.1.1 WPF基础架构 762
27.1.2 WPF相关技术 763
27.2 WPF应用程序 764
27.2.1 WPF编程 764
27.2.2 WPF应用程序 768
27.2.3 WPF浏览器应用程序 770
27.3简单WPF实例 772
27.3.1 ListBox控件的使用与控件属性 772
27.3.2使用Hyperlink控件实现多页面切换 776
27.3.3使用DockPanel布局控件 777
27.3.4使用StackPanel布局控件 779
27.3.5使用数据源集合实现多数据绑定 780
27.3.6属性变更引起依赖数据绑定实例 783
27.3.7使用Brush填充图形 787
27.3.8使用Storyboard实现动画 794
27.3.9使用Storyboard实现控件的翻转 796
27.4本章总结 798
第28章 WCF框架 799
28.1 WCF基础 799
28.1.1 WCF架构 799
28.1.2 WCF模型 800
28.2创建WCF服务和客户端 801
28.2.1创建WCF应用程序 801
28.2.2定义WCF服务协定 802
28.2.3实现WCF服务 803
28.2.4运行WCF服务 804
28.2.5创建WCF客户端 806
28.2.6配置WCF客户端 807
28.2.7使用WCF客户端 809
28.3 WCF技术 811
28.3.1在WCF中使用会话 811
28.3.2在WCF中使用事务 812
28.4本章总结 814
第29章 WWF框架 815
29.1概述 815
29.1.1 WWF框架 815
29.1.2框架元素概述 816
29.2 WWF应用开发 817
29.2.1创建WWF应用程序 817
29.2.2 WWF活动简介 820
29.2.3 WWF服务简介 822
29.3通过WWF创建工作流应用 823
29.3.1创建顺序工作流 823
29.3.2创建带参数的顺序工作流 829
29.3.3创建状态机工作流 833
29.4本章总结 840
第30章 语言集成查询LINQ 841
30.1 LINQ概述 841
30.1.1 LINQ查询概述 841
30.1.2创建简单LINQ查询 842
30.2 LINQ语言基础 843
30.2.1 LINQ查询表达式简介 843
30.2.2 LINQ查询语法和方法语法 845
30.2.3使用LINQ进行数据合并 848
30.2.4使用LINQ进行数据转换 849
30.3 LINQ简单对象模型与查询 851
30.3.1 LINQ To SQL查询 851
30.3.2 LINQ To DataSet查询 855
30.3.3 LINQ To XML查询 856
30.3.4 LINQ To Object查询 858
30.4本章总结 860
第8篇 综合案例 862
第31章 电子购物商城 862
31.1系统总体设计 862
31.1.1系统功能描述 862
31.1.2 WebShopping应用程序组成 864
31.1.3数据库表设计 865
31.1.4数据库表之间关系设计 869
31.2系统通用类和模块设计 870
31.2.1系统常量和枚举设计 870
31.2.2系统常用操作设计 870
31.2.3标题模块设计 872
31.2.4分页模块设计 873
31.2.5系统级联样式表设计 878
31.2.6系统皮肤设计 878
31.2.7 Web.config配置文件设计 879
31.2.8数据库实体类设计 880
31.3电子购物商城首页 883
31.3.1 Default.aspx页面 883
313.2搜索模块 887
31.3.3登录模块 888
31.3.4新闻模块 890
31.3.5公告模块 892
31.4用户注册和登录 894
31.4.1注册用户信息 894
31.4.2提交用户信息 898
31.4.3用户登录 902
31.4.4退出系统 904
31.5浏览商品、购物车和订单 905
31.5.1查看商品 905
31.5.2评论商品 909
31.5.3购物车组件设计 913
31.5.4购买商品 914
31.5.5查看购物车 917
31.5.6创建订单编号 921
31.5.7创建订单 922
31.5.8发布留言 927
31.6商品搜索 930
31.6.1简单搜索 930
31.6.2高级搜索 933
31.7用户信息中心 937
31.7.1用户信息首页 938
31.7.2动态加载操作菜单 940
31.7.3查看个人信息 942
31.7.4修改个人信息 944
31.7.5修改密码 949
31.7.6查看我的订单 952
31.8商品及其分类管理 956
31.8.1商品分类管理 957
31.8.2动态加载商品分类层次结构 961
31.8.3添加商品分类 963
31.8.4修改商品分类 966
31.8.5商品管理 969
31.8.6动态加载商品分类层次树 976
31.8.7添加商品 978
31.8.8修改商品 982
31.8.9商品图片管理 986
31.8.10显示商品图片 991
31.8.11商品评论管理 992
31.9系统信息中心 997
31.9.1新闻管理 998
31.9.2发布新闻 1002
31.9.3修改新闻 1005
31.9.4发布公告 1008
31.9.5留言管理 1011
31.10系统用户和角色管理 1015
31.10.1角色管理 1015
31.10.2添加角色 1019
31.10.3修改角色 1021
31.10.4用户管理 1024
31.10.5添加管理员 1029
31.11本章总结 1033