目录 1
第1章 Hello,Windows Forms 1
1.1 WinForms起步 1
1.2 Visual StudioNET中的Windows窗体 6
1.3 布置控件 10
1.4 控件 13
1.5 应用程序设置 15
1.6 资源 17
1.7 对话框 19
1.8 绘图与打印 21
1.9 数据绑定 23
1.10 多线程用户界面 24
1.11 部署 25
1.12 从MFC转移过来 26
1.13 我们身在何处 26
第2章 窗体 27
2.1 显示窗体 27
2.2 窗体的生存期 29
2.3 窗体的大小和位置 32
2.3.1 限定窗体的大小 36
2.4 窗体修饰 37
2.3.2 Z顺序 37
2.5 窗体的透明度 39
2.6 窗体菜单 42
2.7 子控件 46
2.7.1 控件的Z顺序 47
2.7.2 控件的Tab键顺序 48
2.7.3 控件的主题化 48
2.7.4 装载COM控件 49
2.8.1 窗体的自动缩放 51
2.8 布局 51
2.8.2 锚定 52
2.8.3 停靠 55
2.8.4 停靠与Z顺序 56
2.8.5 拆分 57
2.8.6 分组 58
2.8.7 自定义布局 59
2.9 多文档界面 60
2.10 可视化继承 65
2.11 我们身在何处 67
3.1 标准对话框 68
第3章 对话框 68
3.2 风格 70
3.3 数据交换 72
3.3.1 处理OK和Cancel 73
3.3.2 非模式窗体数据 76
3.4 数据验证 77
3.4.1 正则表达式和数据验证 78
3.4.2 数据格式通知 79
3.4.3 彻底验证 80
3.5.2 使用ErrorProvider提供一般信息 82
3.5 实现帮助 82
3.5.1 工具提示 82
3.5.3 处理帮助按钮和Fl 84
3.5.4 使用HTML帮助 85
3.5.5 已编译的HTML帮助 87
3.5.6 使用HelpProvider组件 89
3.5.7 显示帮助目录、索引和搜索 90
3.6 我们身在何处 91
第4章 绘图基础 92
4.1 在屏幕上绘制 92
4.1.2 触发Paint事件 94
4.1.1 处理Paint事件 94
4.2 颜色 96
4.2.1 已知的颜色 98
4.2.2 颜色转换 100
4.3 画刷 100
4.3.1 单色画刷 102
4.3.2 纹理画刷 102
4.3.3 影线画刷 103
4.3.4 线性渐变画刷 104
4.3.5 路径渐变画刷 105
4.4 画笔 107
4.4.1 线帽样式 109
4.4.2 虚线 110
4.4.3 对齐 111
4.4.4 连接 112
4.4.5 根据画刷创建画笔 112
4.5 形状 113
4.5.1 曲线 114
4.5.2 平滑模式 115
4.5.3 保存和恢复Graphics设置 116
4.6 路径 117
4.7.1 装载和绘制图像 120
4.7 图像 120
4.7.2 缩放、裁剪、平移和扭曲 121
4.7.3 旋转和翻转 123
4.7.4 重新着色 124
4.7.5 透明度 125
4.7.6 动画 126
4.7.7 绘制到图像 128
4.7.8 图标 130
4.7.9 光标 132
4.8 我们身在何处 133
5.1 字体 134
第5章 绘制文本 134
5.1.1 创建字体 136
5.1.2 字体系列 137
5.1.3 字体特征 138
5.1.4 字体高度 140
5.2 字符串 142
5.2.1 格式化 142
5.2.2 字符串和路径 148
5.3 我们身在何处 149
6.1 页面单位 150
第6章 高级绘图 150
6.2 变换 154
6.2.1 缩放 155
6.2.2 缩放字体 155
6.2.3 旋转 156
6.2.4 转换 158
6.2.5 切变 159
6.2.6 组合变换 159
6.2.7 变换助手 160
6.2.8 路径变换 161
6.3 区域 162
6.3.1 构造和填充一个区域 163
6.3.2 按区域进行裁剪 163
6.3.3 域组合操作 164
6.4 优化绘图 165
6.4.1 双重缓冲 167
6.4.2 其他绘图选项 168
6.5 我们身在何处 169
第7章 打印 170
7.1 打印文档 170
7.2 打印控制器 171
7.3 基本打印事件 175
7.4 页边距 177
7.5 页面设置 181
7.6 打印机设置 184
7.6.1 打印范围 185
7.6.2 以打印机为目标 188
7.7 我们身在何处 189
第8章 控件 190
8.1 标准控件 190
8.1.1 动作控件 191
8.1.2 值控件 192
8.1.3 列表控件 193
8.1.4 容器控件 197
8.1.5 ImageList 198
8.1.6 所有者绘制的控件 200
8.2 自定义控件 204
8.2.1 直接派生自Control类 205
8.2.2 测试自定义控件 205
8.2.3 控件的呈现 207
8.2.4 境属性 208
8.2.5 自定义功能 210
8.2.6 控件输入 213
8.2.7 Windows消息处理 217
8.2.8 滚动控件 218
8.2.9 扩展现有控件 220
8.3 用户控件 222
8.4 拖放 223
8.4.1 拖放目标 224
8.4.2 拖放源 227
8.5 我们身在何处 231
9.1 组件 232
第9章 设计期集成 232
9.1.1 标准组件 233
9.1.2 自定义组件 234
9.2 设计期集成基础知识 241
9.2.1 宿主、容器和站点 241
9.2.2 调试设计期功能 243
9.2.3 DesignMode属性 245
9.2.4 特性 246
9.2.5 属性浏览器集成 247
9.2.6 代码序列化 250
9.2.7 批初始化 253
9.3 扩展属性提供者 256
9.4 类型转换器 261
9.4.1 自定义类型转换器 263
9.4.2 可展开的对象转换器 267
9.5 UI类型编辑器 271
9.5.1 下拉式UI类型编辑器 274
9.5.2 模式UI类型编辑器 276
9.6 自定义设计器 279
9.6.1 设计期属性 282
9.6.2 设计期上下文菜单谓词 284
9.7 我们身在何处 286
第10章 资源 287
10.1 资源基础 287
10.1.1 清单资源 287
10.1.2 类型化资源 292
10.1.3 资源管理器 295
10.1.4 设计器资源 298
10.2 资源本地化 300
10.2.1 区域性信息 300
10.2.2 资源探查 302
10.2.3 资源本地化 303
10.2.4 针对非开发者的资源本地化 306
10.2.5 资源解析 307
10.2.6 输入语言 309
10.3 我们身在何处 309
第11章 应用程序与设置 310
11.1 应用程序 310
11.1.1 应用程序生命期 311
11.1.2 应用程序上下文 312
11.1.3 应用程序事件 314
11.1.4 UI线程异常 315
11.1.5 单实例应用程序 317
11.1.6 传递命令行参数 318
11.1.7 Multi-SDI应用程序 321
11.2 环境 326
11.2.1 编译期设置 326
11.2.2 境设置 327
11.3 设置 329
11.3.1 设置的类型 329
11.3.2 config文件 330
11.3.3 动态属性 332
11.3.4 注册表 333
11.3.5 特殊文件夹 338
11.3.6 设置和流 340
11.3.7 独立存储 342
11.3.8 版本化的数据路径 345
11.3.9 选择一种设置机制 347
11.4 我们身在何处 347
第12章 数据集和设计器支持 348
12.1 数据集 348
12.1.1 检索数据 349
12.1.3 更新数据 351
12.1.2 创建数据 351
12.1.4 删除数据 352
12.1.5 跟踪更改 354
12.1.6 提交更改 354
12.1.7 多表数据集 356
12.1.8 约束 358
12.1.9 关系 359
12.1.10 导航 359
12.1.11 表达式 360
12.2.1 连接对象 362
12.2 设计器支持 362
12.2.2 命令对象 363
12.2.3 数据适配器对象 364
12.3 类型化数据集 364
12.3.1 创建一个类型化数据集 364
12.3.2 类型化数据集中的约束 367
12.3.3 类型化数据集中的关系 368
12.3.4 类型化数据集中的表达式 369
12.3.5 为窗体添加一个类型化数据集 370
12.4 我们身在何处 373
13.1 数据绑定 374
第13章 数据绑定和数据网格 374
13.1.1 绑定和数据源 375
13.1.2 针对单项的简单数据绑定 378
13.1.3 针对列表的简单数据绑定 380
13.1.4 针对数据集的简单绑定 381
13.1.5 绑定管理器 382
13.1.6 当前数据行 387
13.1.7 对数据集的修改 388
13.1.8 对控件数据的修改 390
13.1.9 复杂数据绑定 392
13.1.10 数据视图 394
13.1.11 主-从关系 396
13.2 数据网格 399
13.2.1 格式化数据网格 400
13.2.2 数据交换和数据网格 402
13.2.3 一个总结性的例子 403
13.3 自定义数据源 404
13.3.1 自定义“单项数据源” 404
13.3.2 类型描述符和数据绑定 405
13.3.3 类型转换 406
13.3.4 列表数据源 411
13.4 我们身在何处 415
第14章 多线程用户界面 416
14.1 长时间运行操作 416
14.1.1 进度指示 417
14.1.2 异步操作 418
14.1.3 安全和多线程 421
14.1.4 简化的多线程 425
14.1.5 取消 426
14.1.6 通过共享数据进行通信 428
14.1.7 通过方法参数进行通信 429
14.1.8 通过消息传递进行通信 430
14.2 异步Web Services 434
14.3 我们身在何处 438
第15章 Web部署 439
15.1 将控件装载于Internet Explorer中 439
15.1.1 控件的创建 439
15.1.2 控件的交互 440
15.2 代码访问安全性 442
15.2.1 检查权限 444
15.2.2 授予权限 445
15.3.1 应用程序的下载 446
15.3 非接触部署 446
15.3.2 版本检查 448
15.3.3 相关的文件 449
15.4 部分受信任程序集考虑因素 452
15.4.1 允许部分受信任的调用者 453
15.4.2 设置 455
15.4.3 自定义用户输入 456
15.4.4 通过Web Services通信 456
15.4.5 读写文件 458
15.4.6 命令行参数 458
15.4.7 调试NTD应用程序 460
15.5 增加权限 462
15.5.1 以编程的方式增加权限 465
15.5.2 部署权限 467
15.6 代码签名 469
15.7 我们身在何处 471
附录A 从MFC转移到WinForms 472
A.1 关于MFC的一些话 472
A.2 MFC与WinForms 474
A.2.1 区别 475
A.2.2 策略 480
A.3 Genghis 481
附录B 委托和事件 483
B.1 委托 483
B.1.1 接口 484
B.1.2 委托 485
B.1.3 静态订阅者 486
B.2 事件 487
B.2.1 获取所有结果 488
B.2.2 异步通知:触发和忽略 488
B.2.4 异步通知:委托 489
B.2.3 异步通知:轮询 489
B.3 普天同乐 490
附录C 序列化基础 493
C.1 流 493
C.2 格式化程序 496
C.2.1 跳过一个非序列化字段 498
C.2.2 IDeserializationCallback 498
C.3 ISerializable 499
C.4 数据版本协调 501
附录D 标准WinForms组件和控件 503
D.1 组件和控件的定义 504
D.2 标准组件 505
D.2.1 标准对话框 505
D.2.2 通知图标 508
D.2.3 计时器 510
D.2.4 图像列表 510
D.2.5 主菜单和上下文菜单 512
D.2.6 错误提供程序、帮助提供程序和工具提示 512
D.3 标准控件 513
D.3.1 非容器控件 513
D.3.2 容器控件 524
参考文献 526