第1章 .NET、C#和Visual Studio.NET 1
1.1 VB6中存在的问题 1
1.2 .NET Framework 2
1.2.1 公共语言运行库 2
1.2.2 Framework类库 5
1.3 C#语言 6
1.3.1 C#与Visual Basic 6 7
1.3.2 C#与Visual Basic.NET 10
1.4 Visual Studio.NET 11
1.4.1 创建新的项目 12
1.4.2 Solution Explorer和Class View窗口 13
1.4.3 可视化编辑器 14
1.4.4 代码编辑器 16
1.4.5 Task List窗口 17
1.4.6 Server Explorer窗口 18
1.5 本章小结 20
第2章 使用Visual Studio.NET和C#开发Windows应用程序 22
2.1 SuperMind.NET游戏 22
2.1.1 使用Visual Studio.NET创建新的解决方案 23
2.1.2 主窗体的界面设计 25
2.1.3 编写代码 38
2.2 本章小结 49
第3章 C#语言 50
3.1 SweepCSharp游戏 50
3.2 数据类型 52
3.2.1 预定义值类型 52
3.2.2 预定义引用类型 55
3.3 声明变量 56
3.3.1 赋值 56
3.3.2 变量的作用域 59
3.3.3 C#运算符 60
3.4 数组 61
3.5 流程控制 64
3.5.1 条件控制 64
3.5.2 循环语句 69
3.6 向SweepCSharp游戏的窗体中拖放控件 78
3.7 方法 80
3.7.1 方法的声明 80
3.7.2 方法的调用 81
3.8 类型安全设置 84
3.8.1 隐式转换 85
3.8.2 显式转换 85
3.9 完成SweepCSharp游戏 87
3.10 结构化异常处理 92
3.10.1 Finally代码块 94
3.10.2 抛出异常 94
3.10.3 异常处理的范例 95
3.11 字符串的处理 98
3.11.1 字符串处理范例 99
3.11.2 字符串生成器 105
3.12 ArrayLists对象 106
3.13 本章小结 107
4.1 对象和类 109
第4章 面向对象编程:第一部分 109
4.1.1 引入Person类 110
4.1.2 为Person类添加行为 114
4.1.3 访问限定符 115
4.1.4 属性 116
4.2 面向对象编程的原则 121
4.2.1 封装性 121
4.2.2 继承 123
4.2.3 多态性 128
4.3 方法重载 130
4.4 构造函数 133
4.4.1 调用构造函数的确切时间 134
4.4.2 带参数的构造函数 135
4.4.3 重载构造函数 137
4.4.4 从另一个构造函数中调用构造函数 138
4.4.5 派生类执行构造函数的顺序 139
4.4.6 选择调用基类的构造函数 140
4.5 本章小结 141
第5章 面向对象编程:第二部分 143
5.1 基类和派生类 143
5.1.1 多态性的另一例子 143
5.1.2 方法和属性隐藏 145
5.1.3 方法和属性重写 147
5.1.4 有关多态性的更多内容 148
5.1.5 多态性和类型强制转换 149
5.1.6 访问基类成员 152
5.2 抽象类、方法和属性 153
5.2.1 抽象类 154
5.2.2 抽象方法和属性 155
5.2.3 运用抽象 156
5.3 密封类、方法和属性 160
5.4 接口和接口继承 161
5.4.1 接口 161
5.4.2 接口继承 162
5.4.3 应用概念 163
5.5 静态的类成员 169
5.5.1 为Person类添加静态成员 170
5.5.2 通过实例化方法访问静态成员 173
5.5.3 静态构造函数 174
5.6 析构函数 176
5.7 委托和事件 178
5.7.1 委托 178
5.7.2 事件 184
5.8 常量和readonly字段 189
5.8.1 常量 190
5.8.2 readonly字段 192
5.9 值类型和引用类型 193
5.10 通过值和引用传递参数 196
5.10.1 通过值传递值类型 196
5.10.2 通过引用传递值类型 197
5.10.3 通过值传递引用类型 198
5.10.4 通过引用传递引用类型 199
5.11 结构 200
5.12 枚举 201
5.13 .NET Framework中的对象 203
5.13.1 System.Object成员 204
5.13.2 装箱和拆箱 210
5.14 本章小结 212
第6章 构建Windows应用程序 213
6.1 新客户 213
6.2 构建用户界面 214
6.2.1 标准控件 214
6.2.2 添加控件 216
6.3 在TreeView控件中显示文件 223
6.3.1 处理目录和文件 223
6.3.2 用文件信息填充TreeView 225
6.4 构建E-mail部分 231
6.4.1 发送电子邮件 232
6.4.2 最后的测试运行 240
6.5 本章小结 241
第7章 使用ActiveX控件 242
7.1 .NET中使用ActiveX控件的原因 242
7.2 在.NET中使用ActiveX控件 243
7.2.1 Microsoft Web Browser控件 244
7.2.2 使用MAPI控件 250
7.2.3 连接MAPI控件 253
7.2.4 浏览收件箱 254
7.3 本章小结 265
第8章 创建自定义控件 266
8.1 .NET Framework中的用户控件 266
8.2.1 添加Windows Control Library项目 267
8.2 构建带标签的文本框控件 267
8.2.2 提供用户控件的属性 268
8.2.3 测试LabeledTextBox控件 270
8.3 创建自定义过滤控件 273
8.3.1 构建CustomFilter 1 273
8.3.2 测试CustomFilter 1 277
8.4 可视化继承 279
8.5 本章小结 284
第9章 在Windows窗体中显示数据 285
9.1 恢复修改过的pubs数据库 285
9.2 使用数据适配器配置向导 286
9.3 生成DataSet 290
9.4.1 DataGrid控件的格式设置 292
9.4 把数据绑定到DataGrid对象中 292
9.4.2 使用DataView过滤数据 293
9.4.3 把变化写到数据库中 297
9.5 对单值控件进行数据绑定 298
9.5.1 更新记录 302
9.5.2 插入记录 302
9.5.3 删除记录 304
9.6 把数据绑定到ListBox控件中 304
9.7 本章小结 305
第10章 类库 307
10.1 n层应用程序 307
10.1.1 客户-服务器 307
10.1.2 n层体系结构 308
10.2 在Visual Studio.NET中创建类库 310
10.3 使用类库 314
10.4 本章小结 318
第11章 集成VB6和C# 319
11.1 COM的工作原理 319
11.1.1 IUnknown接口和IDispatch接口 320
11.1.2 注册表 321
11.2 .NET的工作原理 322
11.3 在C#中使用VB代码 324
11.4 利用OLEView检验组件 331
11.5 在VB6中使用C#代码 338
11.5.1 C#类库 338
11.5.2 标记程序集 346
11.5.3 利用ILDASM查看程序集 347
11.5.4 注册.NET程序集 349
11.5.5 构建VB6客户程序 350
11.6 本章小结 352
第12章 使用ADO.NET进行数据访问 353
12.1 数据提供者 354
12.1.1 数据适配器的基础知识 354
12.1.2 连接 355
12.1.3 命令 359
12.1.4 使用读取器 364
12.2 DataSet 367
12.2.1 DataSet中的表 367
12.2.2 数据关系和分层数据 369
12.4 本章小结 374
12.3 设计ADO.NET应用程序 374
第13章 ADO.NET高级应用 376
13.1 并发问题 376
13.1.1 RowStateFilter属性 377
13.1.2 接受和拒绝改变 380
13.1.3 写回数据库 381
13.2 XML和ADO.NET 384
13.3 KnowledgeBase项目 389
13.3.1 范围和目标 389
13.3.2 SQL Server数据库 390
13.3.3 数据层 392
13.3.4 业务层 402
13.3.5 客户层 411
13.4 本章小结 422
第14章 部署Windows应用程序 423
14.1 部署.NET Windows应用程序 423
14.1.1 项目配置和.NET Framework 424
14.1.2 XCOPY部署 425
14.1.3 项目类型 426
14.2 Setup Wizard部署 427
14.2.1 项目属性 429
14.2.2 配置目标计算机 429
14.2.3 构建Setup项目 435
14.2.4 运行Setup Wizard 436
14.2.5 自修复 437
14.2.6 卸载 437
14.3 本章小结 438