第1部分 欢迎进入Windows Forms世界
第1章 初识Windows Forms 2
1.1 用C#编程 2
1.1.2 构造函数和方法 5
1.
1.1.4 Main方法 7
1.1.5 Application类 8
1.1.6 程序的执行 9
1.2 Windows Forms控件 9
1.2.1 using指令 11
1.2.2 控件类 12
1.2.3 Controls属性 13
1.3 加载文件 13
1.3.1 事件 15
1.3.2 OpenFileDialog类 16
1.3.3 Bitmap图像 18
1.4 更改窗体的大小 19
1.4.1 Anchor属性 20
1.4.2 Dock属性 21
1.5 回顾 23
第2章 欢迎使用Visual Studio 24
2.1 使用Visual Studio编程 24
2.1.1 创建项目 25
2.1.2 执行程序 27
2.1.3 观察源代码 27
2.2 Windows Forms控件 31
2.2.1 AssemblyInfo文件 31
2.2.2 对窗体进行重命名 33
2.2.3 工具箱窗口 34
2.3 加载文件 38
2.3.1 在Visual Studio中处理事件 38
2.3.2 处理异常 41
2.4 改变窗体的大小 43
2.4.1 设置Anchor属性 43
2.4.2 设置Dock属性 44
2.5 回顾 44
第2部分 Windows Forms基础知识
第3章 菜单 49
3.1 控件和容器 49
3.1.1 控件类 49
3.1.2 容器类 50
3.2 菜单的本质 51
3.2.1 菜单术语 52
3.2.2 .NET中的菜单 52
3.3 菜单栏 53
3.3.1 添加菜单条 54
3.3.2 添加菜单项 56
3.3.3 添加下拉菜单项 58
3.4 菜单处理 62
3.4.1 通过设计窗口添加事件处理方法 62
3.4.2 通过属性窗口添加事件处理方法 63
3.5 回顾 65
第4章 上下文菜单和状态条 66
4.1 上下文菜单条 66
4.1.1 创建上下文菜单 67
4.1.2 向上下文菜单添加菜单项 68
4.1.3 共享上下文菜单 69
4.2 下拉事件和事件参数 71
4.2.1 处理子菜单项点击 72
4.2.2 在显示子菜单之前对它进行更改 75
4.3 状态条 77
4.3.1 创建状态条 77
4.3.2 添加状态条标签 78
4.4 回顾 82
第5章 可复用类库 84
5.1 类库 84
5.1.1 创建类库 85
5.1.2 使用命令行工具 87
5.1.3 创建Photograph类 88
5.1.4 定义类的属性 91
5.2 object类 93
5.2.1 比较object和Object 93
5.2.2 重写object类的方法 94
5.3 接口 96
5.3.1 接口和集合 96
5.3.2 理解集合类 97
5.4 泛型 101
5.4.1 泛型类 101
5.4.2 理解泛型集合 102
5.4.3 资源的销毁 105
5.5 回顾 107
第6章 文件和常用对话框 109
6.1 标准菜单 109
6.1.1 更改菜单栏 109
6.1.2 管理相册 112
6.2 常用文件对话框 117
6.2.1 创建新相册 117
6.2.2 打开相册 119
6.2.3 保存相册 121
6.2.4 打印和退出 123
6.3 流和写入器 124
6.3.1 Stream类 124
6.3.2 把相册写入磁盘 126
6.3.3 从磁盘中读取相册 128
6.4 相册管理 130
6.4.1 添加和删除图像 130
6.4.2 浏览相册 131
6.4.3 显示相册的状态 133
6.5 回顾 133
第7章 对话框 135
7.1 消息框 135
7.1.1 创建OK消息框 136
7.1.2 创建YesNo消息框 137
7.1.3 创建YesNoCancel消息框 139
7.2 Form.Close方法 141
7.2.1 比较Close和Dispose 141
7.2.2 拦截Form.Close方法 143
7.3 窗体和面板 145
7.3.1 Form类 145
7.3.2 创建对话框 146
7.4 无模式对话框 147
7.4.1 创建无模式对话框 148
7.4.2 向窗体添加面板和标签 149
7.4.3 更新PixelDialog控件 152
7.4.4 显示无模式对话框 155
7.4.5 更新PixelDialog窗体 157
7.4.6 追踪鼠标移动 158
7.5 回顾 159
第8章 文本框 160
8.1 窗体的继承 160
8.1.1 创建基类窗体 161
8.1.2 创建派生类窗体 163
8.2 标准文本框 165
8.2.1 添加文本框 165
8.2.2 添加多行文本框 169
8.2.3 连接对话框 173
8.3 掩码文本框 174
8.3.1 处理KeyPress事件 174
8.3.2 设置文本的掩码 176
8.4 回顾 180
第9章 按钮 181
9.1 下压按钮 181
9.1.1 Button类 182
9.1.2 扩展PhotoAlbum类 183
9.1.3 存储相册数据 184
9.2 单选按钮 186
9.2.1 RadioButton类 186
9.2.2 创建相册对话框 187
9.3 复选框按钮 189
9.3.1 CheckBox类 189
9.3.2 使用复选框按钮 190
9.3.3 完成AlbumEditDialog窗体 191
9.3.4 再次连接对话框 193
9.4 工具提示和错误提示 194
9.4.1 ToolTip类 195
9.4.2 显示工具提示 195
9.4.3 创建扩展器提供程序 198
9.4.4 ErrorProvider类 200
9.5 回顾 202
第10章 处理用户输入和加密 203
10.1 键盘事件 203
10.1.1 3种事件 203
10.1.2 处理KeyPress事件 203
10.1.3 处理KeyDown和KeyUp事件 205
10.1.4 预处理命令键 206
10.2 鼠标事件 207
10.2.1 MouseEventArgs类 208
10.2.2 使用鼠标事件实现
FlybyTextProvider 209
10.2.3 使用FlybyTextProvider类 212
10.3 加密 214
10.3.1 Cryptography命名空间 214
10.3.2 对数据进行加密 215
10.3.3 写入加密数据 217
10.3.4 读取加密数据 218
10.3.5 存储经过加密的相册 219
10.4 链接标签 222
10.4.1 LinkLabel类 222
10.4.2 保存加密相册 223
10.4.3 打开经过加密的相册 224
10.5 回顾 227
第11章 列表框 229
11.1 列表控件 229
11.1.1 ListControl类 229
11.1.2 创建一个新的解决方案 231
11.1.3 重构应用程序的代码 231
11.2 简单的列表框 236
11.2.1 ListBox类 237
11.2.2 显示数据源 238
11.2.3 选择列表元素 241
11.3 多选列表框 243
11.3.1 启用多选功能 243
11.3.2 改变列表项的顺序 246
11.3.3 删除列表元素 249
11.4 回顾 250
第12章 组合框 251
12.1 标准组合框 251
12.1.1 ComboBox类 251
12.1.2 创建组合框 252
12.1.3 选择列表框中的列表项 254
12.1.4 修改数据源 255
12.2 可编辑的组合框 257
12.2.1 再次创建组合框 257
12.2.2 动态更新组合框 260
12.3 自动完成 261
12.3.1 理解自动完成 261
12.3.2 在组合框中使用自动完成功能 264
12.4 列表项的格式化 264
12.4.1 格式化接口 264
12.4.2 实现IFormattable接口 265
12.4.3 在列表控件中使用格式化 268
12.4.4 实现自定义格式化 270
12.5 回顾 272
第13章 选项卡控件和选项卡页面 273
13.1 选项卡控件的基础知识 273
13.1.1 TabControl类 273
13.1.2 创建选项卡控件 274
13.2 选项卡页面的基础知识 277
13.2.1 TabPage类 277
13.2.2 创建选项卡页面 277
13.2.3 在选项卡页面中封装现有的控件 280
13.3 自绘制的选项卡 282
13.3.1 DrawItem事件 282
13.3.2 绘制页面的选项卡 284
13.3.3 使用自绘制的选项卡控件 286
13.4 自绘制的列表框 287
13.4.1 自定义的列表项 287
13.4.2 设置列表项的大小 288
13.4.3 绘制列表项 289
13.5 回顾 291
第14章 日期、日历和进度条 292
14.1 显示日期和时间 292
14.1.1 DateTimePicker类 292
14.1.2 创建DateTimePicker控件 294
14.2 日期和时间的格式 296
14.2.1 对日期和时间值进行格式化 296
14.2.2 自定义DateTimePicker控件 299
14.3 日历 300
14.3.1 MonthCalendar类 300
14.3.2 UserControl类 301
14.3.3 创建日历控件 302
14.3.4 初始化日历 303
14.3.5 在日历控件中处理鼠标点击 305
14.4 进度条 308
14.4.1 创建image用户控件 308
14.4.2 ProgressBar类 311
14.4.3 执行后台任务 313
14.5 回顾 316
第15章 装饰和美化 317
15.1 图像和光标 317
15.1.1 Bitmap类 317
15.1.2 图标 320
15.1.3 光标 324
15.2 嵌入式资源和声音 325
15.2.1 嵌入资源 325
15.2.2 使用项目资源文件 327
15.2.3 播放声音 329
15.3 滑动条 331
15.3.1 TrackBar类 331
15.3.2 使用滑动条 332
15.4 计时器 335
15.4.1 Timer类 336
15.4.2 使用计时器 336
15.5 回顾 338
第16章 工具条 339
16.1 工具条的基础知识 339
16.1.1 ToolStrip类 340
16.1.2 创建工具条 341
16.2 工具条项的基础知识 342
16.2.1 ToolStripItem类 342
16.2.2 添加标准工具条项 342
16.2.3 工具条项的对齐、溢出和其他特性 345
16.3 图像列表 346
16.3.1 ImageList类 346
16.3.2 创建图像列表 346
16.3.3 添加自定义工具条按钮 348
16.4 工具条容器 349
16.4.1 ToolStripContainer类 350
16.4.2 在容器中嵌入一个工具条 351
16.5 特殊的按钮项 353
16.5.1 切换按钮 353
16.5.2 下拉按钮 356
16.5.3 分隔按钮