第1章 Hello, Windows Forms 1
1.1 WinForms起步 1
1.2 Visual Studio .NET中的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.1.1 擁有者和所擁有的窗體 28
2.2 窗體的生存期 29
2.3 窗體的大小和位置 32
2.3.1 限定窗體的大小 36
2.3.2 Z順序 37
2.4 窗體修飾 37
2.5 窗體的透明度 39
2.5.1 非矩形窗體 40
2.6 窗體菜單 42
2.6.1 上下文菜單 45
2.7 子控件 46
2.7.1 控件的Z順序 47
2.7.2 控件的Tab鍵順序 48
2.7.3 控件的主題化 48
2.7.4 裝載COM控件 49
2.8 布局 51
2.8.1 窗體的自動縮放 51
2.8.2 錨定 52
2.8.3 ???nbsp; 56
2.8.4 ??颗cZ順序 57
2.8.5 拆分 58
2.8.6 分組 59
2.8.7 自定義布局 60
2.9 多文檔界面 61
2.9.1 合并菜單 63
2.10 可視化繼承 66
2.11 小結 68
第3章 對話框 68
3.1 標準對話框 68
3.2 風格 70
3.2.1 動態(tài)地設置模式和非模式行為 71
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 實現幫助 82
3.5.1 工具提示 82
3.5.2 使用ErrorProvider提供一般信息 82
3.5.3 處理幫助按鈕和F1 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.1 處理Paint事件 94
4.1.2 觸發(fā)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 根據畫刷創(chuàng)建畫筆 112
4.5 形狀 113
4.5.1 曲線 114
4.5.2 平滑模式 115
4.5.3 保存和恢復Graphics設置 116
4.6 路徑 117
4.6.1 填充模式 119
4.7 圖像 120
4.7.1 裝載和繪制圖像 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章 繪制文本 134
5.1 字體 134
5.1.1 創(chuàng)建字體 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章 高級繪圖 150
6.1 頁面單位 150
6.1.1 將像素轉換為頁面單位 153
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 聯(lián)合變換 159
6.2.7 變換助手 160
6.2.8 路徑變換 161
6.3 區(qū)域 162
6.3.1 構造和填充一個區(qū)域 163
6.3.2 按區(qū)域進行裁剪 163
6.3.3 區(qū)域組合操作 164
6.4 優(yōu)化繪圖 165
6.4.1 雙重緩沖 167
6.4.2 其他繪圖選項 168
6.5 小結 169
第7章 打印 170
7.1 打印文檔 170
7.2 打印控制器 171
7.2.1 打印預覽 172
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 環(huán)境屬性 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
拖放目標和COM 226
8.4.2 拖放源 227
支持多重效果 228
8.5 小結 231
第9章 設計期集成 232
9.1 組件 232
9.1.1 標準組件 233
使用標準組件 233
9.1.2 自定義組件 234
9.2 設計期集成基礎知識 241
9.2.1 宿主、容器和站點 241
9.2.2 調試設計期功能 243
9.2.3 DesignMode屬性 245
9.2.4 特性 247
9.2.5 屬性瀏覽器集成 248
9.2.6 代碼序列化 251
9.2.7 批初始化 254
9.3 擴展屬性提供者 257
9.4 類型轉換器 262
9.4.1 自定義類型轉換器 264
9.4.2 可展開的對象轉換器 268
9.5 UI類型編輯器 272
9.5.1 下拉式UI類型編輯器 275
9.5.2 模式UI類型編輯器 277
9.6 自定義設計器 280
9.6.1 設計期屬性 283
9.6.2 設計期上下文菜單謂詞 285
9.7 小結 287
第10章 資源 287
10.1 資源基礎 287
10.1.1 清單資源 287
10.1.2 類型化資源 292
10.1.3 資源管理器 295
利用資源管理器訪問資源 296
10.1.4 設計器資源 298
設計器資源問題 299
10.2 資源本地化 300
10.2.1 區(qū)域性信息 300
10.2.2 資源探查 302
10.2.3 資源本地化 303
10.2.4 針對非開發(fā)者的資源本地化 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 環(huán)境 326
11.2.1 編譯期設置 326
11.2.2 環(huán)境設置 327
11.3 設置 329
11.3.1 設置的類型 329
11.3.2 .config文件 330
11.3.3 動態(tài)屬性 332
11.3.4 注冊表 333
11.3.5 特殊文件夾 339
11.3.6 設置和流 341
11.3.7 獨立存儲 342
11.3.8 版本化的數據路徑 346
11.3.9 選擇一種設置機制 347
11.4 小結 347
第12章 數據集和設計器支持 348
12.1 數據集 348
12.1.1 檢索數據 350
12.1.2 創(chuàng)建數據 351
12.1.3 更新數據 352
12.1.4 刪除數據 352
12.1.5 跟蹤更改 354
12.1.6 提交更改 355
12.1.7 多表數據集 357
12.1.8 約束 359
12.1.9 關系 359
12.1.10 導航 360
12.1.11 表達式 361
12.2 設計器支持 362
12.2.1 連接對象 363
12.2.2 命令對象 364
12.2.3 數據適配器對象 365
12.3 類型化數據集 365
12.3.1 創(chuàng)建一個類型化數據集 365
12.3.2 類型化數據集中的約束 368
12.3.3 類型化數據集中的關系 369
12.3.4 類型化數據集中的表達式 370
12.3.5 為窗體添加一個類型化數據集 371
12.4 小結 374
第13章 數據綁定和數據網格 375
13.1 數據綁定 375
13.1.1 綁定和數據源 376
13.1.2 針對單項的簡單數據綁定 379
13.1.3 針對列表的簡單數據綁定 381
13.1.4 針對數據集的簡單綁定 382
13.1.5 綁定管理器 383
13.1.6 當前數據行 388
13.1.7 對數據集的修改 389
13.1.8 對控件數據的修改 391
13.1.9 復雜數據綁定 393
13.1.10 數據視圖 395
13.1.11 主-從關系 397
13.2 數據網格 400
13.2.1 格式化數據網格 401
13.2.2 數據交換和數據網格 403
13.2.3 一個總結性的例子 404
13.3 自定義數據源 405
13.3.1 自定義“單項數據源” 405
13.3.2 類型描述符和數據綁定 406
13.3.3 類型轉換 407
13.3.4 列表數據源 412
13.4 小結 416
第14章 多線程用戶界面 417
14.1 長時間運行操作 417
14.1.1 進程指示 418
14.1.2 異步操作 419
14.1.3 安全和多線程 422
14.1.4 簡化的多線程 426
14.1.5 取消 427
14.1.6 通過共享數據進行通信 429
14.1.7 通過方法參數進行通信 430
14.1.8 通過消息傳遞進行通信 431
14.2 異步Web Services 435
14.3 小結 439
第15章 Web部署 440
15.1 將控件裝載于Internet Explorer中 440
15.1.1 控件的創(chuàng)建 440
15.1.2 控件的交互 441
15.2 代碼訪問安全性 443
15.2.1 檢查權限 445
15.2.2 授予權限 446
15.3 非接觸部署 447
15.3.1 應用程序的下載 447
15.3.2 版本檢查 449
15.3.3 相關的文件 450
15.4 部分受信任程序集考慮因素 453
15.4.1 允許部分受信任的調用者 454
15.4.2 設置 456
15.4.3 自定義用戶輸入 457
15.4.4 通過Web Services通信 457
15.4.5 讀寫文件 459
15.4.6 命令行參數 459
15.4.7 調試NTD應用程序 461
15.5 增加權限 463
15.5.1 以編程的方式增加權限 466
15.5.2 部署權限 468
15.6 代碼簽名 470
15.7 小結 472
附錄A 從MFC轉移到WinForms 473
A.1 關于MFC的一些話 473
A.2 MFC與WinForms 475
A.2.1 區(qū)別 476
A.2.2 策略 480
A.3 Genghis 481
附錄B 委托和事件 483
B.1 委托 483
B.1.1 接口 484
B.1.2 委托 485
B.1.3 靜態(tài)訂閱者 486
B.2 事件 487
B.2.1 獲取所有結果 488
B.2.2 異步通知:觸發(fā)和忽略 488
B.2.3 異步通知:輪詢 489
B.2.4 異步通知:委托 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 數據版本協(xié)調 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 容器控件 523