第1部分 Visual C#.NET简介 3
第1章 Visual Studio.NET和Visual C#.NET简介 3
1.1 创建基于.NET平台的应用程序 3
1.1.1 .NET框架 4
1.1.2 了解程序集 5
1.2 Visual Studio.NET简介 7
1.2.1 起始页 8
1.2.2 Visual Studio.NET的窗口 9
前言 13
1.2.3 Visual Studio.NET选项 14
1.2.4 Visual Studio.NET的帮助 16
1.3 创建Visual C#解决方案 16
1.3.1 使用项目模板 17
1.3.2 生成新的解决方案 18
1.4 典型Visual C#程序的布局 19
1.4.1 注释源代码 20
1.4.2 使用命名空间 21
1.4.3 声明类 21
1.4.4 定义Main方法 22
1.4.5 编译项目 23
1.4.6 输出Hello World 23
1.5 本章小结 24
第2章 C#基础 25
2.1 基本数据类型 26
2.1.1 .NET公共类型系统 27
2.1.2 公共语言规范 27
2.2 类 28
2.2.1 在Visual C#中添加类 28
2.2.2 声明类 29
2.2.3 继承简介 31
2.2.4 object基类 34
2.2.5 类成员 35
2.2.6 继承和方法 45
2.2.7 可访问性 47
2.3 命名空间 50
2.3.1 新建命名空间 51
2.3.2 使用命名空间 52
2.3.3 添加引用 53
2.4 接口 54
2.4.1 使用接口 54
2.4.2 类和接口 55
2.5 通过异常处理来管理错误 55
2.5.1 异常处理 56
2.5.2 .NET框架的异常 61
2.6 强制类型转换 61
2.7 结构 64
2.7.1 结构与继承 64
2.7.2 分配结构 64
2.7.3 成员函数 65
2.8 枚举 65
2.9 本章小结 66
第3章 值类型和引用类型 67
3.1 理解值类型 68
3.1.1 值类型的生存期 68
3.1.2 装箱 69
3.1.3 声明新的值类型 70
3.2 理解引用类型 70
3.2.1 处理数组 71
3.2.2 处理字符串 75
3.2.3 引用类型的生存期和垃圾回收 76
3.3 本章小结 83
第4章 运算符、类型转换和属性 84
4.1 了解运算符 84
4.1.1 使用关系运算符比较对象 85
4.1.2 使用逻辑运算符构建逻辑表达式 86
4.1.3 使用算术运算符进行算术运算 88
4.1.4 使用位运算符管理位模式 89
4.1.5 使用赋值运算符设置变量的值 92
4.1.6 使用条件运算符 94
4.1.7 获取类型信息 94
4.1.9 使用其他运算符 95
4.1.8 直接寻址 95
4.2 使用运算符 96
4.2.1 理解运算符优先级 96
4.2.2 使用checked和unchecked关键字 98
4.2.3 为类型定义运算符 98
4.2.4 创建新的值类型 100
4.2.5 控制&&和||的行为 104
4.3 类型转换 105
4.3.1 进行隐式类型转换 106
4.3.2 进行显式类型转换 106
4.3.3 使用Convert类 107
4.3.4 进行用户自定义类型转换 107
4.4 数值的基本字符串格式 108
4.5 将属性作为智能字段使用 110
4.6 本章小结 111
第5章 流程控制 112
5.1 根据条件选取代码路径 113
5.1.1 if语句 113
5.1.2 switch语句 115
5.2 使用迭代语句建立循环 118
5.2.1 for循环 118
5.2.2 foreach循环 121
5.2.3 while循环 123
5.2.4 do循环 124
5.3 使用跳转语句改变控制 126
5.3.1 break语句 127
5.3.2 continue语句 128
5.3.3 goto语句 129
5.3.5 throw语句 130
5.3.4 return语句 130
5.3.6 将控制转出异常处理模块 131
5.4 本章小结 132
第Ⅱ部分 C#高级应用 135
第6章 委托与特性 135
6.1 使用委托 135
6.1.1 创建委托 136
6.1.2 将委托用作回调方法 137
6.1.3 将委托作为算符使用 139
6.1.4 组合委托 141
6.1.5 手工迭代委托链 142
6.1.6 委托与非静态方法的共用 144
6.2 事件处理 147
6.2.1 使用事件字段 148
6.2.2 引发事件 149
6.2.3 使用事件的例子 150
6.3 设置特性 152
6.3.1 使用特性 153
6.3.2 特性解析 153
6.3.3 定义自定义特性 154
6.3.4 创建强名称 162
6.4 本章小结 163
第7章 索引生成器与枚举数 164
7.1 使用索引生成器 165
7.1.1 声明索引生成器 165
7.1.2 为接口声明索引生成器 168
7.1.3 索引生成器示例 169
7.2 使用枚举数 171
7.2.1 理解枚举数接口 172
7.2.2 实现枚举接口 173
7.2.3 使用枚举接口 177
7.3 本章小结 178
第8章 集合与排序 179
8.1 比较与排序 179
8.1.1 用IComparable接口创建可比类型 179
8.1.2 用IComparer接口建立比较类 182
8.2 在集合类中的排序对象 186
8.2.1 集合界面的一般应用 186
8.2.2 使用Queue类 190
8.2.3 使用Stack类 195
8.2.4 使用Hashtable类 196
8.2.5 使用专用集合类 198
8.3 本章小结 201
9.1 根据条件编译代码 202
第9章 调试技术 202
9.2 跟踪堆栈 205
9.2.1 显示调用堆栈 205
9.2.2 访问详细的方法信息 207
9.3 使用Trace和Debug类 208
9.3.1 生成程序跟踪信息 209
9.3.2 用Trace和Debug类显示消息 209
9.3.3 用开关控制输出 212
9.3.4 使用跟踪侦听器处理跟踪消息 215
9.4 用Visual Studio.NET进行调试 223
9.4.1 设置断点 224
9.4.2 使用调用堆栈 226
9.5 本章小结 227
10.1.1 了解应用程序域 228
10.1 编写多线程代码 228
第10章 高级论题 228
10.1.2 使用线程 229
10.1.3 同步共享对象访问 233
10.1.4 使用线程池的异步操作 243
10.2 使用不安全代码 247
10.2.1 了解对不安全代码的需求 248
10.2.2 声明不安全上下文 248
10.3 本章小结 254
第Ⅲ部分 Windows窗体设计 257
第11章 Windows窗体简介 257
11.1 理解Windows窗体 258
11.1.1 将窗体作为对话框使用 258
11.1.2 把窗体作为视图使用 258
11.2.1 检查Visual C#.NET创建的文件 259
11.2 开发简单的Windows窗体项目 259
11.2.2 执行Windows窗体项目 263
11.2.3 为项目添加新窗体 263
11.2.4 模式窗体与无模式窗体 264
11.2.5 确定DialogResult值 264
11.2.6 向窗体传递值 265
11.3 用消息框显示信息 266
11.3.1 指定消息框按钮 267
11.3.2 向消息框中添加图标 267
11.3.3 为消息框定义默认按钮 268
11.3.4 控制消息框的特殊情况 269
11.3.5 为消息框指定父窗口 269
11.4 控制Windows窗体应用程序 270
11.4.1 启动应用程序 270
11.4.2 确定应用程序路径信息 271
11.4.3 执行空闲操作 273
11.4.4 关闭应用程序 273
11.5 使用窗体属性影响窗体性态 274
11.5.1 设置边框风格 275
11.5.2 定义其他窗体属性 275
11.6 本章小结 277
第12章 为窗体添加控件 278
12.1 控件简介 279
12.2 使用Button类 279
12.2.1 ButtonBase类 279
12.2.2 Button类 280
12.2.3 RadioButton类 284
12.2.4 CheckBox类 285
12.3.1 事件处理结构 286
12.3 基本事件处理 286
12.3.2 添加新的事件处理器 287
12.3.3 删除事件处理器 290
12.3.4 把按键转换为点击按钮 290
12.3.5 验证控件的内容 290
12.4 使用TextBox类 292
12.4.1 隐藏文本框控件中的密码 293
12.4.2 使用多行文本框控件 293
12.4.3 使用其他的文本框属性 294
12.5 使用Label类 295
12.6 使用LinkLabel类 295
12.6.1 处理Click事件 296
12.6.2 LinkLabel的独有属性 296
12.7 使用ListBox类 298
12.7.1 向列表框中添加项目 299
12.7.2 从列表框中删除项目 301
12.7.3 防止在当更新列表框时重新绘制 301
12.7.4 选择列表框项目 302
12.7.5 使用其他列表框属性 305
12.8 使用CheckedListBox类 306
12.8.1 选中复选列表框中的项目 307
12.8.2 处理复选列表框事件 308
12.9 使用ComboBox类 309
12.9.1 使用组合框的属性 309
12.9.2 处理组合框事件 311
12.10 使用ScrollBar类进行卷动控制 312
12.11 作为容器的控件 313
12.11.1 内嵌控件 313
12.12 本章小结 314
12.11.3 Panel类 314
12.11.2 GroupBox类 314
第13章 用户输入与反馈 316
13.1 使用鼠标 316
13.1.1 处理鼠标移动事件 317
13.1.2 处理鼠标选择事件 319
13.1.3 用鼠标指针提供反馈 322
13.2 接受键盘输入 329
13.2.1 获取输入焦点 329
13.2.2 使用Keys枚举 330
13.2.3 从键盘处理事件 332
13.3 使用有窗体的主菜单 333
13.3.1 创建主菜单 334
13.3.2 处理菜单事件 340
13.3.3 更新菜单项 341
13.3.4 使用多个菜单 342
13.3.5 创建简单的编辑器 342
13.4 实现快捷菜单 350
13.4.1 创建基本的快捷菜单 350
13.4.2 快捷菜单的编程 351
13.5 用状态栏提供反馈 353
13.5.1 创建状态栏 353
13.5.2 使用状态栏面板 354
13.5.3 显示时间和日期 357
13.6 本章小结 359
第14章 GDI+ 360
14.1 了解Windows窗体几何形状 360
14.1.1 用Point结构指定位置 361
14.1.3 定义矩形 362
14.1.2 定义可视元素的大小 362
14.2 使用Graphics类 363
14.2.1 处理Paint事件 364
14.2.2 用GDI+绘制文本 364
14.2.3 绘制线条 367
14.2.4 绘制矩形 368
14.2.5 填充矩形 369
14.3 对Windows窗体使用颜色 372
14.3.1 创建Color结构 372
14.3.2 使用Color属性 373
14.3.3 使用当前的系统颜色 374
14.3.4 【颜色】公用对话框 375
14.4 使用画笔 378
14.4.2 使用TextureBrush类 380
14.4.1 创建纯色画笔 380
14.4.3 使用阴影画笔模式填充形状 383
14.4.4 使用LinearGradientBrush类 384
14.4.5 使用PathGradientBrush类 387
14.5 使用笔 389
14.5.1 使用SystemPens和Pens类 389
14.5.2 使用Pen类 391
14.6 使用字体 395
14.6.1 了解字体符号集 395
14.6.2 使用FontCollection类 397
14.6.3 字体规格 398
14.6.4 【字体】公用对话框 402
14.7 本章小结 402
第15章 高级控件 403
15.1.1 NumericUpDown控件 404
15.1 使用Up-Down控件 404
15.1.2 DomainUpDown控件 405
15.2 使用ProgressBar控件 407
15.3 使用PictureBox控件 408
15.4 使用ImageList控件 408
15.5 使用RichTextBox控件 410
15.5.1 公共格式化选项 411
15.5.2 从文件加载RichTextBox控件 412
15.5.3 保存RichTextBox控件的内容 413
15.6 使用TabControl控件 413
15.6.1 创建TabPage对象 414
15.6.2 编程管理TabPage对象 414
15.6.3 使用Windows窗体设计器创建TabControl控件 416
15.6.4 管理TabControl控件 417
15.7 使用MonthCalendar控件 419
15.8 使用DateTimePicker控件 423
15.9 管理控件的位置和大小 426
15.9.1 锚定控件 427
15.9.2 停靠控件 429
15.10 本章小结 430
第16章 Grid、Tree和List控件 431
16.1 使用DataGrid控件 431
16.1.1 显示数据库数据 432
16.1.2 在数据网格中显示分级数据 435
16.1.3 高级数据网格 438
16.2 在TreeView控件中显示分级信息 440
16.2.1 设计TreeView控件 440
16.2.2 生成动态的TreeView控件 443
16.2.3 实现自定义的TreeView控件 447
16.3.1 实现ListView控件 450
16.3 使用ListView控件 450
16.3.2 注册表编辑器——TreeView与ListView的组合 456
16.4 本章小结 457
第17章 增强Windows窗体 458
17.1 添加工具栏 458
17.1.1 创建工具栏 459
17.1.2 修改工具栏的外观 460
17.1.3 定义工具栏按钮样式 464
17.2 使用剪贴板 466
17.2.1 复制到剪贴板 466
17.2.2 获取剪贴板中的数据 467
17.2.3 了解剪贴板格式 468
1 7.3.1 拖放基础 471
17.2.4 在剪贴板上用多种格式存储相同的数据 471
17.3 使用拖放 471
17.3.2 启用FileDrop 474
17.3.3 实现拖放源 475
17.4 本章小结 477
第Ⅳ部分 数据访问和XML 481
第18章 ADO.NET 481
18.1 ADO.NET的新特性 481
18.1.1 ADO.NET的断开连接模型 481
18.1.2 XML集成 482
18.1.3 ADO.NET数据集 482
18.1.4 .NET数据提供程序 482
18.2 创建和使用数据集 483
18.2.2 检测已更改的数据 484
18.2.3 接受更改 484
18.2.1 添加记录 484
18.2.4 绑定到数据组件 485
18.2.5 持续数据 485
18.3 建立到数据存储器的连接 486
18.3.1 创建Connection对象 486
18.3.2 连接到数据库 486
18.3.3 用.NET数据提供程序集中连接 487
18.3.4 启动事务 489
18.3.5 完成事务 489
18.3.6 关闭连接 490
18.4 执行命令 491
18.4.1 构建Command对象 491
18.4.4 关联到事务 492
18.4.3 关联到连接 492
18.4.2 提供命令文本 492
18.4.5 配置命令超时 493
18.4.6 指定命令类型 493
18.4.7 传递参数 493
18.4.8 执行命令 495
18.5 使用DataReader对象检索数据 497
18.6 使用DataAdapter对象填充数据集 498
18.6.1 构建DataAdapter对象 498
18.6.2 将命令与DataAdapter关联 498
18.6.3 填充数据集 499
18.6.4 更新数据 500
18.6.5 表映射 501
18.6.6 使用【数据适配器配置向导】 502
18.7 本章小结 505
第19章 XML 506
19.1 读写XML 507
19.1.1 使用XmlTextWriter创建XML 507
19.1.2 使用XmlTextReader读取XML 514
19.2 使用文档对象模型(DOM) 521
19.2.1 使用XML文档 522
19.2.2 使用DOM的示例应用程序 525
19.3 数据集与XML 529
19.3.1 将XML数据加入数据集 529
19.3.2 从数据集写入XML 533
19.4 使用Visual C#.NET编辑XML文件 533
19.4.1 创建和编辑XML原始数据 534
19.4.2 查看和编辑架构 534
19.5 本章小结 536
19.4.3 添加XML数据 536
第Ⅴ部分 ASP.NET和Web服务 539
第20章 Web窗体 539
20.1 使用ASP.NET的必备条件 540
20.2 ASP.NET的特性 540
20.2.1 逻辑和用户界面的分离 540
20.2.2 已编译的页面 540
20.2.3 支持多种语言 541
20.2.4 事件驱动模型 541
20.2.5 改善的对象模型 541
20.2.6 可伸缩性和性能 541
20.2.7 安全性 542
20.2.8 支持跟踪和调试 542
20.3 Web窗体简介 542
20.3.1 基于服务器的编程 543
20.3.3 继开的访问和页面重建 544
20.3.2 回传和往返 544
20.4 创建基本的Web窗体页面 545
20.4.1 创建项目 545
20.4.2 创建Calculatorl的Web窗体页面 547
20.4.3 添加控件 547
20.4.4 添加静态HTML文本 549
20.4.5 设计按钮控件 549
20.4.6 运行页面 550
20.4.7 检验Calculatorl的Web窗体页面 551
20.5 Web窗体控件 553
20.5.1 标准用户界面控件 554
20.5.2 显示数据的控件 555
20.5.3 验证控件 555
20.5.5 Web服务器控件的事件 556
20.5.4 专用控件 556
20.6 创建带有控件事件的Web窗体页面 557
20.6.1 创建配置Web窗体的页面 558
20.6.2 为ListBox控件创建列表项 559
20.6.3 创建事件处理程序 560
20.7 维持状态:保留往返传递之间的值 562
20.8 创建一个保留值的Web窗体页面 562
20.8.1 创建Calculator2的Web窗体页面 564
20.8.2 在Calculator2的Web窗体页面中添加代码 565
20.9 使用Web窗体中的数据 567
20.9.1 创建DataBinding_Simple Web窗体页面 568
20.9.2 绑定到ADO.NET数据集 569
20.9.3 直接作用于数据库 570
20.9.4 存储数据集 570
20.9.5 使用List Data控件 572
20.10 本章小结 578
21.1 了解SOAP 579
第21章 SOAP和Web服务 579
21.2 了解Web服务 580
21.2.1 WebService指令 580
21.2.2 派生于System.Web.Services.WebService类 580
21.2.3 使用WebService属性 581
21.2.4 使用WebMethod属性 582
21.3 创建Web服务 582
21.3.1 创建Web服务类 584
21.3.2 创建Web方法 584
21.4 使用发现查找Web服务 585
21.4.1 使用静态发现 586
21.4.2 使用动态发现 586
21.4.3 广告发现页面 586
21.5 浏览Web服务 587
21.4.4 了解WSDL 587
21.6 使用Web服务 589
21.6.1 使用HTTP GET协议 589
21.6.2 使用HTTP POST协议 590
21.6.3 使用SOAP协议 591
21.6.4 在Visual Studio.NET IDE中引用Web服务 592
21.6.5 生成Web服务代理 593
21.7 部署Web服务 594
21.8 设置Web服务的安全性 594
21.8.1 配置IIS身份验证 595
21.8.2 使用数字证书 596
21.8.3 设置Intemet协议安全 597
21.8.4 提供自定义的身份验证 597
21.9 本章小结 597