第1章 .NET和Windows 1
1.1 Windows应用程序和.NET 2
1.2 消息、句柄和窗口 4
1.3 Windows Forms命名空间 13
1.4 不使用Visual Studio .NET创建窗体 16
1.5 在Visual Studio .NET中创建窗体 19
1.6 小结 27
第2章 使用Windows Forms 29
2.1 创建基于窗体的应用程序 29
2.1.1 自定义窗体 32
2.1.2 通过继承获得更好的窗体 33
2.1.3 连接窗体上的事件 34
2.1.4 有模式和无模式窗体 36
2.1.5 处理继承的窗体上的事件 40
2.1.6 使用VS.NET向导创建窗体 41
2.2 将菜单添加到窗体中 42
2.2.1 主菜单 42
2.2.2 上下文菜单 45
2.2.3 菜单处理程序 47
2.3 多文档界面的窗体 48
2.3.1 使用属性管理MDI窗体 50
2.3.2 改变菜单 51
2.4 常用对话框 52
2.4.1 打开文件的对话框 53
2.4.2 保存文件的对话框 56
2.4.3 颜色选择的对话框 58
2.4.4 VS.NET和常用对话框 59
2.5 工具栏 60
2.5.1 添加工具栏 61
2.5.2 处理工具栏事件 65
2.5.3 VS.NET和工具栏 69
2.6 状态栏 69
2.7 小结 72
第3章 Windows常用控件 73
3.1 控件基类 73
3.1.1 控件属性 73
3.1.2 控件容器 75
3.2 常用控件 76
3.2.1 TextBox控件 76
3.2.2 ListBox控件 81
3.2.3 ListView控件 83
3.2.4 ComboBox控件 85
3.2.5 DomainUpDown控件 87
3.3 按钮控件 89
3.3.1 CheckBox控件 92
3.3.2 RadioButton控件 94
3.3.3 Scrollbar控件 95
3.3.4 Timer控件 98
3.3.5 DateTimePicker控件 100
3.3.6 MonthCalendar控件 103
3.3.7 TreeView控件 105
3.4 自定义绘制 108
3.4.1 自定义绘制ComboBox 108
3.4.2 自定义绘制Button 113
3.5 在.NET中使用ActiveX控件 117
3.5.1 使用AxImp 118
3.5.2 简单的Web浏览器应用程序 121
3.5.3 Windows媒体播放器 127
3.5.4 Microsoft Agent控件 128
3.6 小结 131
第4章 数据绑定 132
4.1 .NET中的数据绑定 132
4.1.1 BindingContext 133
4.1.2 BindingManagerBase 133
4.1.3 Binding类 135
4.2 简单的数据绑定 136
4.3 更新数据 147
4.4 复杂的绑定 149
4.4.1 绑定要求 149
4.4.2 ITypedList 164
4.4.3 IBindingList和IEditableObject 169
4.5 绑定到自定义控件中 180
4.6 小结 183
第5章 用户输入 184
5.1 介绍键盘 185
5.1.1 关于编码 185
5.1.2 KeyboardSample应用程序 186
5.1.3 加速键 191
5.1.4 开发键盘计时器 192
5.1.5 检查键盘修正键 194
5.2 将键盘国际化 194
5.3 失去焦点和得到焦点 198
5.4 响应鼠标 200
5.4.1 鼠标功能 200
5.4.2 跟踪鼠标 203
5.5 使用鼠标绘图 207
5.6 使用工具提示 214
5.7 小结 215
第6章 在.NET环境下绘图 216
6.1 GDI+概述 217
6.2 事件和画图 221
6.3 图形对象 222
6.4 颜色、画笔和画刷 224
6.4.1 透明度 225
6.4.2 已知的颜色 227
6.4.3 渐变颜色 229
6.4.4 影线画刷 232
6.4.5 颜色对话框 233
6.5 形状、路径和区域 234
6.5.1 线条和曲线 235
6.5.2 变换 238
6.5.3 路径 241
6.5.4 阴影和裁剪 242
6.5.5 区域 244
6.6 绘制文字——字体 245
6.6.1 字体对话框 246
6.6.2 已安装的字体族 247
6.6.3 文本方向 249
6.7 处理图像 251
6.7.1 缩放 253
6.7.2 旋转和翻转 254
6.7.3 PictureBox控件 256
6.7.4 滚动 257
6.8 小结 259
第7章 打印 260
7.1 System.Drawing.Printing 260
7.2 在.NET环境下打印 261
7.2.1 图形 263
7.2.2 PrinterSettings 264
7.2.3 PrintDocument 268
7.2.4 PrintDialog 282
7.2.5 PageSetupDialog 287
7.3 示例:打印DataGrid 292
7.3.1 设计目标 292
7.3.2 GridPrinting 292
7.4 小结 309
第8章 自定义控件 310
8.1 扩展控件 311
8.1.1 创建TextBox扩展控件 311
8.1.2 使用TextBox扩展控件 321
8.1.3 设计时使用特性和XML文档 324
8.2 复合控件 325
8.2.1 创建AddressControl复合控件 326
8.2.2 使用AddressControl 340
8.3 自定义绘制的控件 344
8.3.1 创建RoundButton控件 344
8.3.2 使用RoundButton控件 352
8.4 深入介绍PropertyGrid 353
8.4.1 自定义TypeConverters 353
8.4.2 自定义UITypeEditors 355
8.5 小结 358
第9章 优化Windows应用程序 360
9.1 线程的基本问题 360
9.2 应用程序锁定 362
9.3 线程性能 367
9.4 编写多线程应用程序 371
9.4.1 数据库应用程序 371
9.4.2 网络应用程序 378
9.5 不同的Windows Forms编程模型 383
9.6 使用P/Invoke 388
9.7 事件存取器 391
9.8 小结 395
第10章 部署Windows应用程序 396
10.1 使用Windows Installer 398
10.1.1 安装向导 398
10.1.2 文件系统编辑器 400
10.1.3 其他编辑器 402
10.1.4 注册表编辑器 403
10.1.5 文件类型编辑器 404
10.1.6 UI编辑器 404
10.1.7 自定义操作编辑器 409
10.1.8 启动条件编辑器 410
10.1.9 修复和删除 411
10.1.10 重新分布.NET Framework 412
10.1.11 安装到GAC 413
10.1.12 通过Web使用Windows Installer 414
10.2 合并模块项目 415
10.3 CAB文件 416
10.4 处理部署 417
10.5 代码访问安全——保护客户 423
10.6 小结 424