-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
12/13 新書到! 10/8 新書到! 10/1 新書到! 9/24 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Visual C# 2008開發技術實例詳解

( 簡體 字)
作者:李繼攀等編著類別:1. -> 程式設計 -> .NET -> C#
譯者:
出版社:電子工業出版社Visual C# 2008開發技術實例詳解 3dWoo書號: 13997
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:8/1/2008
頁數:788
光碟數:1
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121068553
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書是一本講解C#編程語言實例程序的書。本書以“技術要點”、“實現步驟”和“源程序解讀”的方式,向讀者提供大量獨立的、完整的C#語言示例程序。
本書在鞏固C#編程語言示例程序的基礎上,遍及C#編程語言的各種實用技術,為各個主題的C#應用程序提供直接的實戰指導和實現方式,內容涵蓋C#編程的各個方面,包括了現今高級的編程技術應用。這些實例具有極強的針對性和實用性,直指C#編程技術的核心內容,揭示其中關鍵。通過這些生動的實例指導,讀者能夠按圖索驥,由點到面地將學習的編程知識有效地用于實際開發,充分體會到C#編程的樂趣與奧妙。
本書的示例程序包含編者多年的研究和實踐心得,可使讀者全面地、透徹地理解C#編程的核心技術和技巧,也可以直接修改書中的實例用于實際開發,對提高C#編程實踐能力有極大的幫助。
目錄:

第一篇 C#語法篇
第1章 C#初步 2
1.1 創建Hello World控制臺程序 3
它是學習一門新語言的好起點,我們就從這里開始吧!本示例創建一個控制臺程序,并在屏幕上輸出“Hello World”。
1.2 創建Hello World Web應用程序 4
本示例創建一個Web應用程序,并在Web窗口中輸出“Hello World”。
1.3 創建Hello World Windows應用程序 5
本示例創建一個Windows應用程序,并在Windows窗口中輸出“Hello World”。
第2章 數據類型 7
2.1 C#數據類型與比較 8
C#語言是強類型語言,因此每個變量和對象都必須具有聲明類型。C#語言的數據類型主要分為兩類:值類型和引用類型。
2.2 decimal類型的格式化 9
decimal 關鍵字表示 128 位數據類型。同浮點型相比,decimal 類型具有更高的精度和更小的范圍,這使它適合于財務和貨幣計算。
2.3 Object類型操作 11
在C#語言的統一類型系統中,所有類型(預定義類型、用戶定義類型、引用類型和值類型)都是直接或間接從 Object類型繼承的。可以將任何類型的值賦給object類型的變量。
2.4 string類型簡單操作 13
字符串對象是“不可變的”,即它們一旦創建就無法更改。對字符串進行操作的方法實際上返回的是新的字符串對象。
2.5 多種數字類型混合運算 14
數據類型之間的轉換可以使用強制轉換顯式進行,但在某些情況下,也允許隱式轉換。
2.6 結構體聲明和初始化 17
如果從結構創建一個對象并將該對象賦給某個變量,變量則包含結構的全部值。
2.7 枚舉類型的格式化 18
enum 關鍵字用于聲明枚舉,即一種由一組稱為枚舉數列表的命名常數組成的獨特類型。每種枚舉類型都有基礎類型,該類型可以是除 char類型以外的任何整型。
2.8 字符類型與數字類型的轉換 20
本示例說明如何在字符類型和數字類型之間進行轉換。
第3章 數組 22
3.1 數組的定義 23
C#語言的數組包括一維數組、多維數組、動態數組和交錯數組四種類型,這四種數組均繼承了System.Array類。動態數組使用ArrayList類實現。
3.2 遍歷數組元素 24
C#語言提供foreach語句,該語句提供一種簡單明了的方法來循環訪問數組的元素。
3.3 操作數組 25
在C#語言中,數組實際上是對象,而不只是像C和C++語言中那樣的可尋址連續內存區域。Array 是所有數組類型的抽象基類型。
3.4 獲取數組屬性 27
System.Array 類提供了許多有用的方法和屬性,用于排序、搜索和復制數組。
3.5 數組參數的使用 29
數組是引用類型,數組作為方法的參數使用時,應注意in、ref、out聲明的用法。
第4章 C#語句 32
4.1 使用break語句 33
break 語句用于終止最近的封閉循環或它所在的switch語句。
4.2 使用continue語句 34
continue 語句將控制權傳遞給它所在的封閉迭代語句的下一次迭代。
4.3 使用do語句 36
do 語句重復執行{}中的一個語句或語句塊,直到指定的表達式計算為 false。
4.4 使用foreach語句 37
foreach 語句為數組或對象集合中的每個元素重復一個嵌入語句組。
4.5 使用for語句 39
for 循環重復執行一個語句或語句塊,直到指定的表達式計算為 false。
4.6 使用goto語句 40
goto 語句將程序控制直接傳遞給標記語句。goto的一個通常用法是將控制傳遞給特定的 switch-case 標簽或 switch 語句中的默認標簽。
4.7 使用if語句 42
if 語句根據 Boolean 表達式的值選擇要執行的語句。
4.8 使用switch語句 44
switch 語句是一個控制語句,它通過將控制傳遞給其體內的一個 case 語句來處理多個選擇和枚舉。
4.9 使用while語句 45
while 語句執行一個語句或語句塊,直到指定的表達式計算為 false。
第5章 運算符 48
5.1 使用as運算符 49
用于在兼容的引用類型之間執行轉換。as 運算符類似于強制轉換,所不同的是,當轉換失敗時運算符將產生空,而不是引發異常。
5.2 使用is運算符 50
檢查對象是否與給定類型兼容。例如,可以確定對象是否與 string 類型兼容。is 運算符只考慮引用轉換、裝箱轉換和取消裝箱轉換。不考慮其他轉換,如用戶定義的轉換。
5.3 使用new運算符 52
用于創建對象和調用構造函數。new運算符還用于調用值類型的默認構造函數。
5.4 使用sizeof運算符 54
用于獲取值類型的字節大小。
5.5 使用typeof運算符 55
用于獲取類型的 System.Type 對象。typeof 運算符也能用于公開的泛型類型。具有不只一個類型參數的類型的規范中必須有適當數量的逗號。
5.6 使用遞增遞減運算符 58
增量運算符(++)將操作數加1。增量運算符可以出現在操作數之前或之后。減量運算符(--)將操作數減1。減量運算符可以出現在操作數之前或之后。
5.7 使用賦值運算符 60
提供13種賦值運算符。如賦值運算符(=)將右操作數的值存儲在左操作數表示的存儲位置、屬性或索引器中,并將值作為結果返回。
5.8 使用關系運算符 62
提供6種關系運算符。如對于預定義的值類型,如果操作數的值相等,則相等運算符(==)返回true,否則返回false。
5.9 使用邏輯運算符 64
提供9種邏輯運算符。例如,“&”運算符既可作為一元運算符也可作為二元運算符。
5.10 使用算術運算符 67
提供5種算術運算符。例如,“+”運算符既可作為一元運算符也可作為二元運算符。
第6章 預處理指令 69
6.1 使用region定義代碼區間 70
#region在使用Visual Studio代碼編輯器的大綱顯示時,指定可展開或折疊的代碼塊。
6.2 使用define指令 71
#undef可以取消符號的定義,以便通過將該符號用做#if指令中的表達式,使表達式的計算結果為 false。
6.3 使用warning和error指令 72
#warning從代碼的特定位置生成一級警告。#error可以從代碼中的特定位置生成錯誤。
6.4 使用條件指令 73
提供4種條件指令。
第7章 異常處理 75
7.1 創建自定義異常 76
C#程序員使用try塊對可能受異常影響的代碼進行分區,并使用 catch塊來處理所產生的任何異常。不管是否引發異常,都可以使用 finally 塊來執行代碼。
7.2 獲取異常信息 77
catch塊可以指定要捕捉的異常類型。這個類型稱為“異常篩選器”,它必須是 Exception 類型,或者必須從此類型派生。
7.3 使用finally關鍵字 78
finally塊允許清理在try塊中執行的操作。如果存在finally塊,它將在執行完try和catch塊之后執行。
7.4 使用try-catch語句捕獲異常 80
try-catch 語句由一個 try 塊后跟一個或多個 catch 子句構成,這些子句指定不同的異常處理程序。
7.5 使用多catch語句捕獲異常 82
在同一個 try-catch 語句中可以使用一個以上的特定catch子句。這種情況下catch子句的順序很重要,因為會按順序檢查 catch 子句。
第二篇 C#面向對象篇
第8章 類與接口 86
8.1 傳遞類與傳遞結構體的區別 87
本示例演示在向方法傳遞結構時,傳遞的是該結構的副本,而在傳遞類實例時,傳遞的是一個引用。
8.2 多個接口的繼承 89
類和結構可從多個接口繼承。接口自身可從多個接口繼承。
8.3 復制構造函數 91
與有些語言不同,C# 不提供復制構造函數。如果創建了新的對象并希望從現有對象復制值,必須自行編寫適當的方法。
8.4 類的定義 93
類是C#中功能最為強大的數據類型。像結構一樣,類也定義了數據類型的數據和行為。
8.5 類的繼承 95
繼承是通過使用派生來實現的,它的數據和行為從基類繼承。
8.6 使用抽象類 98
可以將類聲明為抽象類。方法是在類定義中將關鍵字abstract置于關鍵字class之前。
8.7 使用靜態構造函數 100
靜態構造函數用于初始化任何靜態數據,或用于執行僅需執行一次的特定操作。在創建第一個實例或引用任何靜態成員之前,將自動調用靜態構造函數。
8.8 使用私有構造函數 101
私有構造函數是一種特殊的實例構造函數,它通常用在只包含靜態成員的類中。
8.9 使用析構函數 103
析構函數用于析構類的實例。
8.10 顯式實現接口方法 104
如果類實現兩個接口,并且這兩個接口包含具有相同簽名的成員,那么在類中實現該成員將導致兩個接口都使用該成員作為它們的實現。
8.11 顯式實現接口屬性 106
本示例聲明一個接口IDimensions和一個類 Box,該類顯式實現接口成員getLength和getWidth。通過接口實例dimensions訪問這些成員。
第9章 方法和屬性 108
9.1 方法的參數使用 109
方法參數放在括號中,并用逗號隔開。空括號表示方法不需要參數。
9.2 方法的改寫 111
派生類型可以重寫繼承的虛方法。重寫方法提供了對方法的一種新定義,將根據運行時的值的類型,而不是編譯時已知的變量類型來調用方法。
9.3 方法的重載 112
每個類型成員都有一個唯一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。
9.4 類的屬性定義 113
類的屬性是實現封裝性的數據結構,具有get訪問器和set訪問器,這兩個訪問器定義了屬性的讀取和賦值方式。
9.5 使用抽象屬性 115
抽象屬性定義屬性的讀寫方式,在具有抽象屬性的類派生的子類中,必須使用override關鍵字實現該抽象屬性。
9.6 使用靜態屬性 117
類的靜態屬性通過類名稱調用,而不通過類實例的名稱調用。
9.7 屬性的繼承 118
子類繼承了父類的屬性,此時在子類中雖然不包含屬性的聲明,也能夠使用該屬性,如果子類需要重新定義屬性,可使用new關鍵字覆蓋父類的屬性。
第10章 命名空間 120
10.1 創建自定義命名空間 121
使用namespace關鍵字創建自定義的命名空間。
10.2 獲取類的完整命名空間 122
在程序中,通過實例的GetType方法獲取實例的類結構,再調用該類的Namespace屬性獲取類的完整命名空間。
10.3 使用命名空間別名限定符 123
使用“=”運算符為命名空間聲明別名,使用“::”運算符獲取別名定義的命名空間的成員。
第11章 委托和事件 125
11.1 實現接口中的事件 126
接口中的事件在類中具有顯式和隱式兩種實現方式。
11.2 使用事件和委托 128
事件處理方法可以使用委托的方式由外部程序提供,當類中的代碼產生事件時,應判斷委托是否已經被指定,然后執行委托中指定的事件處理方法。
11.3 使用委托 130
使用委托時會產生協變和逆變的現象。協變表現為指定方法返回的類型是委托聲明類型的派生類,逆變表現為方法的參數類型是委托聲明的基類。
11.4 使用字典存儲事件 132
使用泛型的字典能夠存儲事件,靈活地實現多個事件的處理方法。
11.5 委托方法數量的增加與減少 135
使用“+=”運算符向委托中增加方法,使用“-=”運算符向委托中移除方法。可以重復添加。
11.6 在類中實現事件處理 136
類內部的事件指的是在類的封裝范圍之內的事件,這類事件的特點是不向外部程序提供事件,而且由內部程序提供處理方法。
第三篇 高級技術篇
第12章 ADO.NET編程 142
12.1 創建Web程序連接Access數據庫 143
使用OLEDB數據庫引擎連接Access數據庫,并在程序中獲取當前網站所在的完整路徑,以連接該路徑下的Access數據庫。
12.2 創建Web程序連接SQL Server Express數據庫文件 145
使用“.\SQLEXPRESS”數據庫引擎連接SQL Server Express數據庫,并在程序中獲取當前網站所在的完整路徑,以連接該路徑下的SQL Server Express數據庫。
12.3 創建Web程序連接SQL Server數據庫 147
VS2008中不僅提供了SQL Server Express的集成,也對SQL Server數據庫提供了強大的支持,以滿足實際應用中服務器端數據庫策略的需求。
12.4 創建Windows程序連接SQL Server數據庫 149
.NET Framework下的Windows應用連接SQL Server數據庫時,與Web程序連接SQL Server數據庫大同小異,其中的差別只是界面的設計與觸發事件的不同。
12.5 定義DataTable架構 151
使用DataTable的構造函數創建DataTable類實例,并使用Columns集合的Add方法定義數據表字段,使用Rows集合的Add方法添加數據。
12.6 將數據集數據寫入到XML和從XML讀取數據 153
使用DataSet類中定義的GetXml方法將DataSet中的數據轉換為XML字符串。使用DataSet類中定義的ReadXml方法將XML中的數據加載到DataSet中。
12.7 使用BeginExecuteReader實現異步讀取數據 156
使用DataReader類中定義的BeginExecuteReader方法實現異步讀取數據。
12.8 使用DataTableReader瀏覽數據表中的數據 160
DataTableReader類表示包含一個或多個的、只讀向前的結果集的數據讀取器。當DataTableReader包含多個結果集時,游標將會在結果集之間貫穿。
12.9 使用DataView對數據進行排序和過濾 162
DataView表示數據的視圖,具有對數據進行排序和篩選的功能。
12.10 使用DataView獲取數據視圖 164
DataView通過數據關系的定義能夠創建從表的數據視圖。
12.11 使用DataView類修改數據 166
DataView的AllowNew屬性、AllowEdit屬性和AllowDelete屬性分別表示是否允許新增、修改和刪除DataView中的數據。
12.12 使用ExecuteScalar讀取數據 169
ExecuteScalar是DbCommand類的一種查詢方式,該方法執行返回的是查詢結果集的第一行第一列的數據。
12.13 使用ExecuteXmlReader讀取數據 170
ExecuteXmlReader方法返回的是一個XmlReader類實例,該實例包含XML數據,要求ExecuteXmlReader方法中的SQL語句執行的結果必須是XML格式的數據。
12.14 使用SqlConnection創建數據庫連接 171
SqlConnection類表示到SQL Server數據庫的一個連接,通過指定該類中包含的ConnectionString屬性,可以使用不同的方式,或者不同的用戶創建數據庫連接。
12.15 使用SqlDataAdapter獲取數據 174
SqlDataAdapter類表示的是SQL Server數據庫的適配器。該適配器的主要作用是在數據庫連接和DataSet之間進行交互。
12.16 使用SqlDataReader獲取數據 176
SqlDataReader類是為ADO.NET讀取SQL Server數據的、只進向前的讀取器。
12.17 使用T-SQL命令填充數據對象 178
執行T-SQL命令最常用的類是SqlCommand類。
12.18 使用存儲過程填充數據對象 179
存儲過程是保存在數據庫中的一組SQL語句命令,可以為存儲過程指定一個或多個參數。
第13章 事務處理 181
13.1 使用SqlTransaction實現數據庫操作事務 182
SqlTransaction類是對SQL Server數據庫進行事務處理的類。
13.2 使用TransactionScopeOption實現事務選項控制 184
TransactionScopeOption枚舉中包含三個成員:Required、RequiresNew和Suppress。
13.3 使用TransactionScope實現單數據庫連接事務操作 186
TransactionScope類表示一個事務范圍,位于該范圍內的代碼塊都成為一個事務,在調用TransactionScope類中定義的Complete方法時,將結束并提交事務。
13.4 使用TransactionScope實現多數據庫連接事務操作 188
當應用程序需要在多個數據庫中進行事務性操作的時候,使用TransactionScope類可以方便地實現應用程序的這一需求。
第14章 XML處理 191
14.1 從XML文件中加載DataSet 192
調用DataSet中定義的ReadXml方法從XML文件中加載DataSet。
14.2 從XML字符串中加載DataSet 193
使用DataSet的ReadXml方法從XML字符串中加載DataSet。
14.3 將對象層次結構映射到XML數據 195
XML是一種表示樹型結構的數據。XML數據中包含的內容成為樹型結構中的節點。XML節點映射了XML數據中的內容。
14.4 使用DataSet讀取和寫入XML架構 198
使用ReadXmlSchema方法讀取包含在XML數據中的架構信息,創建DataSet中數據表的結構。
14.5 使用XmlDocument保存XML數據 201
XmlDocument類描述了一個位于內存中DOM結構的XML數據的整體。
14.6 使用XmlReader讀取XML元素 202
XmlReader類是XML數據的讀取器,該讀取器具有快速、非緩存、只進訪問的特點。
14.7 使用XmlReader讀取XML屬性 204
XMLReader讀取XML屬性時,應首先定位到該屬性所在的元素,然后通過XmlReader類實例的GetAttribute方法,從當前元素的數據中獲取屬性。
14.8 使用XmlWriter創建XML文件內容 206
使用WriteStartDocument方法開始一個XML文檔的編輯,使用WriteEndDocument方法則用于來結束一個XML文檔的編輯。
14.9 使用XPathNavigator編輯XML數據 208
XPathNavigator通過一個指定的XPath字符串作為選擇條件,將XPathNavigator表示的游標定位到XML數據中符合條件的節點。
14.10 使用XPathNavigator選擇XML數據 210
XPathNavigator類中定義的Select方法,使用指定XPath表達式字符串作為參數,返回符合該參數的節點集的迭代器。
14.11 使用XslCompiledTransform類實現XSLT處理器 213
XSLT表示的是轉換XML數據的樣式表,在.NET Framework中提供了使用XSLT轉換XML數據的XslCompiledTransform類。
第15章 文件操作 216
15.1 創建目錄列表 217
使用路徑參數創建包含了指定目錄信息的DirectoryInfo類實例,該實例包括目錄的屬性和文件列表。使用GetFiles方法能夠獲取指定目錄的文件列表。
15.2 從文本文件中讀取數據 218
使用StreamReader類能按照指定的編碼設置讀取文本文件。
15.3 創建日志文件 220
使用StreamWriter類實例向文件中寫入數據,因為部分數據可能由于系統處理緩慢而不能及時寫入,所以在所有的寫入操作完成后,需要調用Flush方法。
15.4 對日志文件的讀寫操作 221
StreamWriter類定義的Seek方法,將寫入位置移動到文件末尾,實現將數據以追加方式寫入日志文件的功能。Peek方法則用于判斷讀取器是否已經讀到日志文件末尾。
15.5 復制文件 224
使用靜態類File的Copy方法實現復制文件的功能,當文件存在時,通過指定override參數覆蓋原有的文件。
15.6 獲取驅動器信息 225
用DriverInfo類的GetDrives方法獲取計算機上各個驅動器信息的DriverInfo數組。
15.7 獲取指定文件屬性 227
使用File靜態類的GetAttributes靜態方法獲取指定文件的屬性。使用File靜態類的SetAttributes靜態方法設置指定文件的屬性。
15.8 使用Windows程序查看文件的訪問權限屬性 228
使用File靜態類的GetAccessControl靜態方法獲取指定文件的訪問權限屬性。訪問權限屬性中包含了一系列的訪問規則,訪問規則中又包含了訪問控制項。
15.9 添加和移除文件的訪問控制列表 230
靜態File類的GetAccessControl方法能夠獲取文件訪問權限屬性,該方法返回的是一個FileSecurity類實例,通過修改該實例,可實現文件的訪問控制。
15.10 文件的壓縮與解壓縮 232
使用第三方組件SharpZipLib,實現文件BZIP2算法和GZIP算法的壓縮和解壓縮。
15.11 文件目錄的創建與刪除 237
Directory類包含對實際文件目錄的靜態操作方法,用于創建、刪除、復制、移動、重命名文件目錄。
15.12 向文本文件中寫入數據 239
創建方式寫入文本文件時,使用CreateText方法創建StreamWriter類實例,追加方式寫入文本文件時,使用AppendText方法創建StreamWriter類實例。
15.13 向字符串流中寫入和讀取數據 241
MemoryStream類表示的是保存在內存中的數據流,當向該類實例中寫入數據時,數據并非保存到實際的磁盤文件,而是保存在系統托管內存中。
第16章 正則表達式 243
16.1 從Url地址中提取協議和端口號 244
在一個包含端口號的Url地址字符串中,符號“://”之前的部分表示的是協議,符號“:”之后的部分表示的是端口號。
16.2 更改日期格式 245
使用正則表達式更改日期格式,能夠方便地將日期更改為自定義的多種格式,并能單個提取年、月、日等數據。
16.3 使用正則表達式獲取指定字符 246
需要從傳輸的字符串中提取程序需要的數據時,使用正則表達式解析并獲取指定的字符串,是非常簡易高效的方法。
16.4 使用正則表達式去掉無用字符 248
通過Regex類的Replace靜態方法,使用“\w”正則表達式去掉匹配字符以外的字符。對于非字母數字類型的字符,需要在正則表達式中指定。
16.5 通過CaptureCollection獲取正則表達式的每個匹配對象信息 249
在.NET Framework中,正則表達式可以匹配一組字符串數據。所有匹配的字符串數據保存在一個數組中,該集合中包含多個匹配結果。
16.6 通過GroupCollection獲取正則表達式的匹配集合 251
GroupCollection類表示正則表達式的單次匹配結果集合。
16.7 驗證輸入字符串是否是合法的電子郵件格式 252
電子郵件地址的基本格式是“用戶名@域名”,對于用戶名,大多數的標準是字母數字字符以外,還允許“-”或“_”字符,對于域名,允許IP地址域名或者DNS域名。
第17章 泛型與集合編程 254
17.1 遍歷泛型中元素與遍歷數組中元素 255
泛型中的元素和數組中的元素既有相同之處,也有所區別。最主要的相同之處是都繼承IEnumerable接口。
17.2 操作Dictionary泛型數據集合 257
Dictionary類表示的是一組鍵與值的集合,其中“鍵”在集合中是唯一的,表示檢索時的索引,通過鍵來訪問集合中的數據,“值”是存儲的數據,表示鍵所指向的內容。
17.3 操作List泛型集合 259
List泛型集合與ArrayList功能類似,即向集合中添加元素時集合的長度動態增加。
17.4 初始化ArrayList集合 261
在初始化ArrayList集合的過程中,使用默認的不帶參數的構造函數創建ArrayList類實例時,ArrayList的默認初始容量是0。
17.5 創建列表泛型類 263
創建列表泛型類時,一般在類的內部定義一個List泛型類,繼承并實現IEnumerable接口,通過IEnumerable接口方法實現外部程序對List泛型類的操作。
17.6 集合的初始化與操作 264
IEnumerable接口提供了集合類迭代器的支持。繼承IEnumerable接口的類能夠使用foreach語句遍歷集合元素。
17.7 使用Hashtable存儲集合數據 267
Hashtable類表示的是鍵值對的集合。在Hashtable類中,鍵值對以哈希代碼的形式保存在名為“存儲桶”的特定內存中。
17.8 使用Queue類存儲集合數據 269
Queue類表示先進先出的隊列集合,Queue類支持泛型和非泛型兩種方式。Queue集合的默認初始容量是8。Queue集合類允許元素中存在空引用和重復的元素。
17.9 使用SortedList類存儲集合數據 270
SortedList類表示排序的鍵值對列表, SortedList列表的默認初始容量是0。SortedList列表類不允許重復的鍵,也不允許空引用的鍵,但是允許空引用的值和重復的值。
17.10 使用Stack類存儲集合數據 272
Stack類表示后進先出的堆棧集合,Stack類支持泛型和非泛型兩種方式。Stack集合的默認初始容量是10。Stack集合類允許元素中存在空引用和重復的元素。
17.11 使用泛型方法實現數據交換 273
在兩個集合之間的數據類型轉換,可以通過泛型集合類來實現。
17.12 使用泛型約束限定泛型類型 276
泛型約束有五種方式的實現,即一般約束、派生約束、接口約束、構造函數約束和引用/值類型約束。
第18章 內存與系統控制 278
18.1 調查進程的內存使用情況 279
Process類提供本地和遠程的進程訪問功能,并能夠啟動或停止本地計算機的進程。使用該類可以在應用程序中實現啟動、停止、控制和監視應用程序等功能。
18.2 關閉界面進程的主窗口 280
Thread類提供了創建線程并控制線程的功能。使用該類創建線程運行子窗口。可以在界面進程的主窗口關閉以后,仍然保持子窗口的運行。
18.3 獲取計算機名稱及IP 282
Environment靜態類包含了應用程序當前運行環境的信息。Dns靜態類提供域名解析的一系列靜態方法。使用這兩個靜態類實現獲取計算機名稱及IP地址。
18.4 啟動記事本程序 283
使用Process靜態類的Start靜態方法,開始運行進程并返回一個Process類實例。
18.5 使用MemoryStream 285
MemoryStream類封裝一個字節數組,在構造該類實例時可以使用一個字節數組對其進行初始化。
第四篇 ASP.NET篇
第19章 ASP.NET頁面 288
19.1 獲取Request類的相關信息 289
Request類實際上是HttpRequest類,主要用于在服務器端獲取客戶端的信息。
19.2 獲取User類的相關信息 290
通過Page類的User屬性可以獲取有關發出頁請求的用戶的信息。
19.3 獲取配置文件中的常用配置信息 291
ASP.NET的配置文件“Web.Config”,是一個XML文檔,用于管理用戶的配置信息。
19.4 獲取配置文件中的數據庫連接字符串 293
ConnectionStrings屬性是ConfigurationManager類的靜態屬性,使用該屬性可以訪問配置文件的“connectionStrings”節的信息。
19.5 配置文件的保存 294
Configuration類表示應用程序的配置文件,使用Configuration對象可以獲取配置文件的信息,通過Save方法可以保存修改過的配置文件。
19.6 使用Application存儲信息 295
Application對象實際上是.NET Framework的HttpApplicationState類,主要用于在ASP.NET應用程序中多個會話和請求之間的全局信息共享。
19.7 使用ASP.NET緩存技術 297
ASP.NET的緩存可分為頁面輸出緩存和頁面數據緩存,使用OutputCache指令管理頁面輸出緩存,而HttpCachePolicy類控制頁面輸出緩存,Cache類管理數據緩存。
19.8 使用Cookie存儲信息 299
Cookie是儲存在客戶端瀏覽器的小部分信息,這些信息可以是在內存中的臨時信息,也可以是保存在客戶端文件的持久信息。
19.9 使用Response將信息輸出到頁面 301
Response對應.NET Framework的HttpResponse類,主要用于輸出數據到客戶端。通常從Page類的Response屬性中獲得HttpResponse對象。
19.10 使用Session存儲信息 302
與Application對象的功能相似,主要用于存儲跨網頁的變量或對象。
第20章 ASP.NET控件 304
20.1 RequiredFieldValidator校驗控件的使用 305
RequiredFieldValidator控件是一個限制用戶必須輸入控件的值的控件。
20.2 RangeValidator校驗控件的使用 306
RangeValidator控件是一個驗證控件的輸入范圍的控件。
20.3 RegularExpressionValidator校驗控件的使用 308
RegularExpressionValidator控件是一個使用正則表達式驗證用戶輸入的控件。
20.4 CompareValidator校驗控件的使用 311
CompareValidator控件是一個驗證輸入的數據類型,或比較兩個控件值的控件。
20.5 實現Button控件的單擊事件 313
Button控件是一個按鈕控件。該控件提供給用戶向頁面發送命令,單擊該控件將引發Click事件,在這個事件中編寫執行代碼。
20.6 實現CheckBoxList控件的數據綁定 315
CheckBoxList控件是一組CheckBox控件組成的列表控件。通過Items屬性添加項,每一項代表一個CheckBox控件。
20.7 使用AdRotator控件實現廣告條導航 317
AdRotator控件是一個顯示廣告的控件。該控件隨機并循環顯示一組廣告的內容,頁面的每次刷新都顯示不同的內容。
20.8 使用BulletedList控件實現內容項的綁定 318
BulletedList控件是一個帶項目符號的列表控件。該控件的項可以顯示為文本、超鏈接和帶鏈接的按鈕。
20.9 使用Calendar控件實現日期的選擇 320
Calendar控件是一個日歷控件。該控件主要允許用戶查看和選擇日期。Calendar控件還提供了豐富的屬性,利用這些屬性可以自定義控件的外觀。
20.10 使用FileUpload控件實現文件的上傳 322
FileUpload控件是一個上傳文件到服務器的控件。

20.11 使用HiddenField控件實現頁面的隱藏域 323
HiddenField控件是一個不需要向用戶呈現的控件。該控件是一個隱藏的控件,通常用于保存一些需要但不向用戶顯示的數據,如一個表單的ID。
20.12 使用ImageMap控件實現圖片導航 325
ImageMap控件是一個帶導航功能的Image控件。
20.13 使用Literal控件實現頁面內容的輸出 326
Literal控件是一個可以在頁面保留靜態文本位置的控件。該控件與Lable控件相似,都可以用Text屬性向頁面添加文本信息。
20.14 使用Substitution控件獲取服務器時間 328
Substitution控件是一個可以配置頁面緩存的控件。該控件可指定頁面不緩存的部分。
20.15 使用View控件實現視圖的切換 329
Viewr控件是MultiView控件的一個子視圖,必須包含在MultiView控件中使用。
20.16 使用Wizard控件實現向導過程 331
Wizard控件是一個向導控件。該控件可以配置多個用戶界面,每個界面代表一個步驟。
第21章 ASP.NET母版頁與主題皮膚技術 334
21.1 對Calendar控件使用皮膚 335
Calendar控件提供了豐富的樣式,應用皮膚技術,可使Calendar控件使用不同的主題。
21.2 對GridView控件使用皮膚 336
GridView控件是一個網格控件。該控件可以使用數據源控件自動綁定和顯示數據,還可以利用該控件對數據進行排序、分頁、編輯和刪除。
21.3 對Login控件使用皮膚 338
在Login控件使用皮膚的技術要點與GridView控件相似,只需要在主題文件添加Login控件的皮膚即可。
21.4 對文本框和標簽控件使用皮膚 339
本示例對文本框和標簽控件使用默認皮膚和使用SkinId屬性指定皮膚。這些皮膚在同一主題文件中定義,默認皮膚的定義不需要SkinId屬性。
21.5 實現皮膚的切換 340
在PreInit事件中指定Page對象的Theme屬性,以編程的方式指定主題。使用Cookie技術,客戶端保存用戶選擇的主題信息,提交到服務器,然后更新主題。
21.6 使用單一母版頁 342
母版頁可以創建頁面布局,創建母版頁后,網站中的其他內容頁就可以使用該頁面布局。母版頁可以極大地簡化為站點創建一致外觀的任務。
21.7 實現多母版頁的切換 344
使用Session保存當前使用的母版頁信息。在頁面初始化時,使用Page對象的Master威者PageFile屬性指定母版頁。
21.8 使用母版頁技術實現網站的布局統一 346
分離公共部分的頁面內容和功能,在母版頁實現。用表格設計母版頁的布局,即可實現使用母版頁統一頁面布局。
第22章 ASP.NET站點導航 348
22.1 實現靜態的TreeView控件導航 349
TreeView控件的每個節點是一個TreeNode對象,具有一個Text屬性和Value屬性,Text屬性指定在節點顯示的文字,Value屬性是獲取節點的值。
22.2 實現TreeView的XML數據源綁定 350
TreeView控件可以使用XML文檔作為數據源,根據XML文檔的層次結構顯示節點。
22.3 實現Menu控件的導航 353
Menu控件最簡單的用法是在設計視圖使用Items屬性添加MenuItem對象的集合。
22.4 使用網站導航控件實現網站導航 355
SiteMapPath控件是一個站點導航控件。該控件在水平位置顯示當前頁面位置,并提供向上級的鏈接。
22.5 實現自定義的站點導航提供程序 356
通過配置文件可以修改SiteMapPath控件的默認設置。
第23章 ASP.NET數據源與數據綁定技術 360
23.1 Access數據庫的數據綁定實現 361
AccessDataSource控件是一個專用于訪問Microsoft Access數據庫的數據源控件。
23.2 ObjectDataSource的數據綁定 362
ObjectDataSource控件的TypeName屬性指定的業務對象的完整類名,該業務類應該包含獲取數據、更新、刪除和插入的方法。
23.3 SqlDataSource數據源控件的參數使用 365
SqlDataSource控件是一個訪問關系型數據庫,為頁面的控件提供數據源的控件。
23.4 SqlDataSource數據源控件的數據過濾 367
SqlDataSource控件提供設置查詢、插入、修改和刪除等命令的屬性。
23.5 通過SqlDataSource數據源控件修改數據 369
SqlDataSource控件的DeleteCommand、InsertCommand和UpdateCommand屬性用于設置操作數據庫的SQL語句。
23.6 XmlDataSource數據源的GridView控件綁定 370
XmlDataSource控件是一個可以訪問XML數據的數據源控件。
23.7 XmlDataSource數據源的TreeView控件綁定 372
TreeView控件可以顯示有層次結構的數據,通過XmlDataSource控件訪問XML文檔,然后把TreeView控件綁定到XmlDataSource控件就可以顯示XML文檔中的數據。
23.8 站點地圖數據的綁定實現 373
SiteMapDataSource控件是一個可以訪問站點地圖數據的數據源控件。
23.9 使用Repeater控件進行數據綁定 375
Repeater控件是一個綁定數據的容器控件。該控件本身不具備在運行時呈現的功能,必須通過綁定頁上可用的數據和添加模板來創建自定義列表。
23.10 實現DataList綁定控件的數據綁定 377
DataList控件與Repeater控件的功能和使用方式相似,但DataList控件的功能更強大。
23.11 實現DataList控件對數據的選擇與刪除 380
當指定控件的CommandName屬性與DataList控件內部默認的CommandName相同時,單擊該控件將引發相應的事件,如選擇、刪除等事件。
23.12 實現DataList控件對數據的編輯 382
使用DataList控件的EditItemTemplate模板可以對數據進行編輯,在這個模板定義一些服務器控件,然后與數據源綁定。
23.13 使用DetailsView控件綁定數據 385
DetailsView控件是用一個列表顯示數據源中的單一記錄的控件。該控件的每一行表示數據源中的一個字段的值,通常用于主從表的情況使用。
23.14 使用DetailsView控件的模板 386
DetailsView控件像DataList控件一樣使用模板,在模板中與數據源中的字段綁定。
23.15 使用DetailsView控件進行數據操作 388
DetailsView控件可以編輯、刪除和插入新記錄,這些功能是都是內置的,不需要額外編碼,需要結合數據源控件使用。
23.16 使用FormView控件進行數據綁定 389
FormView控件是用模板綁定數據源,顯示數據源中的單一記錄的控件。該控件與DetailsView控件相似,同樣有分頁、編輯、刪除、樣式設置等功能。
23.17 使用FormView控件進行數據操作 391
FormView控件可以新增或修改數據,EditItemTemplate模板定義修改狀態下的控件布局,InsertItemTemplate模板在新增狀態下使用的。
23.18 使用GridView控件進行數據綁定 394
GridView控件是一個網格控件。該控件可以使用數據源控件自動綁定和顯示數據,還可以利用該控件對數據進行排序、分頁、編輯和刪除操作。
23.19 使用GridView控件的模板列 396
GridView控件可以根據數據源生成列,也可以使用模板定義列。GridView控件可以設置BoundField、ButtonField、CheckBoxField、CommandField、HyperLinkField、ImageField和TemplateField7種不同類型的列。
23.20 使用GridView控件的CheckBox模板列 397
在GridView控件中使用帶CheckBox的模板列,主要為GridView控件添加CheckBoxField類型的列,然后綁定有效的數據源。
23.21 使用GridView控件進行數據的選擇與刪除 399
GridView控件有內置的功能可以實現選擇和刪除數據項,可以通過設置控件的屬性顯示命令按鈕,也可以使用ButtonField類型的列添加命令按鈕。
23.22 使用GridView控件實現數據的排序與分頁 401
使用GridView控件的AllowPaging和AllowSorting屬性指定分頁和排序。
23.23 使用GridView控件編輯數據 402
GridView控件可以綁定數據、排序、分頁和刪除數據,還可以編輯數據。結合數據源控件作用時,這些功能是內置的。
第24章 ASP.NET個性化用戶配置 405
24.1 創建Web部件頁 406
Web部件就是用來創建模塊化的頁面,用戶可以將自己的頁面分類設置成多個模塊,并在模塊下顯示不同的內容。
24.2 更改Web部件的顯示模式 410
WebPart主要包括DesignDisplayMode、DesignDisplayMode、EditDisplayMode、CatalogDisplay Mode和ConnectDisplayMode5種顯示模式。
24.3 Web部件的連接 411
Web部件連接的主要功能就是實現多個部件之間的連接,用戶可以通過一個部件提供的數據更新另外一個部件的內容。
24.4 Web部件的導入 415
Web部件的導入主要是實現組件公用目的,可以通過導入部件來完成通用的部件功能。
24.5 Web部件的自定義 418
在ASP.NET中,可以使用用戶控件和自定義控件,實現一些可復用組件。本示例要介紹的就是如何自定義一個Web部件,此部件可復用,可直接在ZoneTemplate中應用。
24.6 在運行時增加Web部件 420
不管是否是動態添加Web部件,必須在頁面中包含WebPartManager控件。
24.7 簡單的個性化配置 421
個性化設置為不同用戶展示不同的界面,體現網頁的個性化特征。
24.8 復雜屬性的個性化配置示例 422
個性化是Web 2.0網絡時代的標志,用戶除了可以定制自己頁面的屬性,還可以保留頁面的一些個性化信息。
24.9 個性化配置組示例 425
因為Profile在Web.config配置文件中配置,所以一個應用程序只能有一個Profile。如果有一個比較復雜的屬性(如地址屬性包含市、區),Profile提供了配置組。
24.10 個性化配置的繼承性 427
定義繼承自ProfileBase的類,用來設置個性化配置的一些通用屬性。這樣就可以在Web.config文件中繼承這個類,實現個性化配置的繼承。
24.11 個性化配置的移植 429
移植就是將匿名情況下保存的屬性保存到某個已注冊用戶的個性配置中。提供移植的網站必須允許匿名用戶訪問。
24.12 使用用戶控件實現Web部件個性化配置 431
結合前面介紹的Web部件和個性化配置,實現一個使用用戶控件的Web部件頁面,其中此用戶控件具備個性化配置屬性。
第25章 ASP.NET成員與角色管理 434
25.1 登錄系列控件的自定義設置 435
ASP.NET提供了一組登錄控件,這些控件類似于用戶控件,由多個普通服務器控件組成。
25.2 使用登錄系列控件創建網站程序安全登錄 436
通過控制非注冊用戶不能登錄網站,并設置網站的注冊登錄功能,即可創建網站程序的安全登錄。
25.3 實現網站用戶及角色的管理 437
不同用戶只能查看不同的內容,這就是權限管理。本示例介紹如何為網站添加權限管理功能,并實現網站的內容分級管理。
25.4 匿名用戶的授權 440
在ASP.NET以前的程序,所有的匿名用戶都是相同的,沒有用ID來標識唯一。ASP.NET 3.5提供了匿名用戶的唯一ID,可以為未登錄用戶保留一些數據。
第26章 ASP.NET AJAX編程 441
26.1 使用ASP.NET AJAX調用Web服務 442
Web服務是遠程數據調用的一種手段,因其使用的是XML形式的數據形式,所以很多網站將其作為數據調用的主要方式。本示例學習利用AJAX框架調用公用Web服務。
26.2 使用ASP.NET AJAX的事件觸發器 444
事件觸發器是AJAX異步刷新的關鍵。觸發是頁面中某控件調用事件時發生的調用。
26.3 使用ASP.NET AJAX實現GridView的無刷新分頁 446
為GridView控件綁定大數量的數據,必須讓GridView控件具備分頁效果。
26.4 UpdateProgress控件示例 447
UpdateProgress控件必須在UpdatePanel控件內。通過一個控件的事件觸發UpdateProgress更新提示,并且此控件必須在UpdatePanel內。
26.5 Timer控件示例 448
Timer控件被稱為定時器,用來設定一個時間周期,不間斷地執行某種任務。本示例學習如何使用Timer控件實現一個定時任務。
26.6 Accordion控件示例 450
Accordion控件用來顯示折疊菜單,這些菜單項可以靜態設置,也可以動態綁定。
26.7 AlwaysVisibleControl控件示例 452
AlwaysVisibleControl控件用來表示一個始終顯示的控件。在學習JavaScript的時候,經常會看到浮動窗口的特效實例。
26.8 CollapsiblePanel控件示例 454
CollapsiblePanel控件是一個簡單的折疊控件,功能類似于Accordion控件。本示例通過一個按鈕折疊實例,學習如何在程序中應用CollapsiblePanel控件。
26.9 ConfirmButton控件示例 455
JavaScript語言提供一個confirm方法,提供一個用戶確認對話框,允許用戶“確認”或“取消”當前正執行的任務。ConfirmButton控件實現了一個確認按鈕的提示功能。
26.10 DragPanel控件示例 457
AJAX一個很大的特色就是可以定制用戶的界面。本示例演示DragPanel控件,用其可拖曳頁面上的控件,實現真正的用戶定制功能。

26.11 DropDown控件示例 459
DropDown是一個下拉菜單控件,功能類似于ASP.NET 3.5中的服務器控件DropDownList。
26.12 FilteredTextBox控件示例 462
FilteredTextBox控件是一個實現過濾功能的文本控件。其功能類似于在文本框中應用正則表達式。本示例學習使用FilteredTextBox完成普通的過濾字符功能。
26.13 PopupControl控件示例 463
PopupControl控件屬于彈出式控件,功能類似于前面介紹的DropDown控件。
26.14 TextboxWatermark控件示例 465
TextboxWatermark控件被稱為水印文本框,其目的就是讓文本框出現水印效果。水印效果也是一種提示效果,用來幫助用戶了解文本框需要的內容。
26.15 ValidatorCallout控件示例 466
ValidatorCallout控件與驗證控件相結合,為用戶顯示個性化的錯誤提示功能。
第五篇 Windows程序篇
第27章 Windows窗體 470
27.1 處理窗體的鍵盤點擊事件 471
在Windows窗體中,按下鍵盤的任意都將引發KeyDown和KeyPress事件,執行順序是先執行KeyDown事件再執行KeyPress事件。可以從這兩個事件的參數中獲取按鍵的信息。
27.2 創建多文檔界面應用程序 472
多文檔界面(MDI)應用程序具有一個父窗口,該窗口在其工作區內包含一組子窗口。
27.3 創建非矩形Windows窗口 473
在Windows應用程序中,窗口的默認形狀是矩形,有最大最小按鈕和關閉按鈕,通過修改Form類的Region屬性可以改變窗口的顯示區域。
27.4 通過編程的方式調整窗體屬性 474
窗體的屬性可以在屬性窗口設置,也可以通過編程的方式設置。本示例將演示在程序運行時根據用戶的選擇而改變窗體的屬性。
27.5 通過編程方式添加窗體中的控件 475
窗體上的每一個控件都是一個對象,可以從工具箱中選擇控件放置在窗體上,也可以使用編程的方式向窗體添加控件。本示例將以編程的方式向窗體添加按鈕。
27.6 顯示有模式和非模式Windows窗體 477
窗體的顯示方式有兩種:模式和非模式。模式窗體就是打開窗口后,一直保持輸入焦點,除非窗口被關閉。非模式窗口沒有這種限制,可以在各窗口間任意切換。
27.7 在Windows窗體控件中處理輸入事件 478
NET Framework提供了多種輸入用戶數據的控件,例如TextBox、ComboBox等。本示例將演示使用TextBox控件輸入內容,然后從ComboBox控件中檢索內容。
27.8 在Windows應用程序的不同窗體間傳遞數據 479
C#是面向對象的語句,每個窗體都是一個對象,所以在不同的窗體之間傳遞數據需要使用對象的公共成員來實現。本示例將演示在兩個窗體之間進行數據傳遞。
第28章 Windows控件編程 482
28.1 ComboBox控件和ListBox控件的數據綁定 483
ComboBox控件從下拉按鈕中選擇項,ListBox控件是從列中選擇項。
28.2 ListView控件添加和移除項 484
ListView控件是一個帶圖標的列表。該控可以用來顯示大圖標、小圖標和數據。該控件的View屬性可以設置五種顯示形式,分別是LargeIcon、SmallIcon、List、Tile和Details。ListViewItem類代表ListView控件的一項。
28.3 處理在DataGridView控件中輸入數據時發生的錯誤 485
DataGridView控件用于顯示和錄入數據。本示例將演示如何處理輸入數據時發生的錯誤。
28.4 創建密碼文本框 487
TextBox控件提供給用戶輸入和顯示文本,默認情況下,控件以單行顯示。設置Multiline屬性為True,可以使控件以多行的形式顯示。TextBox控件還可用于輸入密碼。
28.5 創建未綁定的DataGridView控件 487
DataGridView控件綁定數據源時,會自動按照數據源生成列,生成的列的類型也與數據源對應。
28.6 更改MonthCalendar控件的外觀 489
MonthCalendar控件是一個日歷控件。該控件提供了一個直觀的圖形界面,可以讓用戶查看和設置日期。該控件還提供了豐富的屬性設置外觀。
28.7 從DateTimePicker控件返回日期 490
DateTimePicker控件是一個時間控件。該控件可以讓用戶選擇日期和時間。
28.8 將快捷菜單附加到TreeView節點 491
TreeView控件是一個樹型控件。在TreeView控件的節點中,可以綁定一個右鍵菜單,方便用戶的操作。
28.9 使用MaskedTextBox控件確保日期輸入的合法性 493
MaskedTextBox控件是一個掩碼輸入控件。該控件通過掩碼區分用戶是否正確輸入。通過Mask屬性可以選擇默認提供的掩碼來驗證用戶是否正確輸入。
28.10 將數據綁定到MaskedTextBox控件 494
MaskedTextBox可以綁定到數據源,綁定的方法與其他控件相似,但如果綁定的數據源格式與掩碼定義的格式不匹配時,則需要改變數據的格式。
28.11 將文件加載到RichTextBox控件中 496
RichTextBox控件是一個增加功能的文本框控件。該控件除了能實現TextBox控件的所有功能外,還增加了許多功能,如設置文本的字體、顏色、打開和保存文件等。
28.12 控制MonthCalendar控件的選擇范圍 498
MonthCalendar控件提供了一個直觀的圖形界面讓用戶查看和設置日期,但通常日期的選擇是有范圍的限制。
28.13 確定CheckedListBox控件中的選定項 499
CheckedListBox控件是一個帶復選框的選項列表。該控件擴展了ListBox控件,從本質上CheckedListBox控件的功能與ListBox控件相同。
28.14 確定被單擊的TreeView節點 500
在TreeView控件上單擊任何一個節點都會引發NodeMouseClick事件,可以單擊鼠標的左鍵或右鍵。
28.15 設置TreeView控件的圖標 501
TreeView控件可以結合ImageList組件一起使用,在節點的旁邊可以顯示一個圖標。本示例將演示如何在TreeView控件中顯示圖標。
28.16 使用BindingNavigator控件瀏覽數據集 502
BindingNavigator控件是綁定到數據的控件的導航工具欄。該控件繼承于ToolStrip控件,提供了一組常用按鈕進行數據的導航,例如前一記錄、后一記錄等。
28.17 使用BindingSource更新數據源 503
BindingSource組件是一個綁定數據源的組件。該組件簡化了將控件綁定到基礎數據源的過程,可以對數據源進行導航、排序、篩選和更新操作。
28.18 使用CheckBox控件的選擇事件控制窗體屬性 506
CheckBox控件是一個復選框控件。該控件向用戶提供兩種狀態選擇:True和False。
28.19 使用ContextMenuStrip實現菜單 507
ContexMenuStrip控件是一個快捷菜單,也就是平常說的右鍵菜單。
28.20 使用ListView和TreeView控件創建資源管理器界面 508
TreeView控件顯示有層次結構的數據信息,ListView控件以列表的形式顯示詳細的數據。本示例將使用TreeView控件結合ListView控件,創建一個資源管理器界面。
28.21 使用MenuStrip創建多文檔窗口 510
MenuStrip控件是程序的主菜單。MenuStrip控件支持菜單合并、多文檔界面和工具提示。
28.22 使用ProgressBar創建應用程序的進度條 511
ProgressBar控件是一個進度顯示控件。該控件可以讓用戶了解一個操作當前的情況,常用于加載大量數據和大文件。
28.23 使用RichTextBox控件顯示Web樣式的鏈接 513
RichTextBox控件是一個功能豐富的文本框,例如可以將Web鏈接顯示為彩色或下劃線形式。本示例將演示使用RichTextBox控件顯示并打開超鏈接。
28.24 使用SplitContainer水平拆分窗口 513
SplitContainer控件是一個分割控件。該控件由兩個Panel控件組成,可以調整面板的大小,并且可以創建多個大小可調的區域。
28.25 使用ToolStripDropDown更改字體顏色 515
ToolStripDropDown類從ToolStrip類繼承,表示當用戶單擊ToolStripDropDownButton時,使用戶可以從列表中選擇單個項的控件。
28.26 使用TrackBar創建應用程序的滑塊 516
TrackBar控件是一個由滑塊和刻度線組成的控件,用于在指定范圍內設定數值。
28.27 使用BindingSource排序和篩選數據 517
BindingSource組件綁定數據源后,就可以對數據源進行排序和篩選。
28.28 使用設計器將數據綁定到DataGridView控件 519
DataGridView控件綁定數據源后,可根據數據源自動生成列。DataGridView控件支持6種類型的列,可以使用不同類型的列綁定數據源,然后設置列屬性。
28.29 為RichTextBox控件選定文本設置字體屬性 521
RichTextBox控件提供了豐富的屬性設置字體的格式,如字形、大小和前景色。可以單獨設置每一個字符的格式。
28.30 在DataGridView單元格中放置自定義控件列 522
DataGridView控件默認支持6種類型的列,通過擴展DataGridViewColumn類可以增加自定義類型的列。本示例將演示如何創建顯示和編輯日期的列以及如何應用。
28.31 在ListBox控件中添加和移除項 526
ListBox控件是一個可以讓用戶選擇的選項列表。用戶可以從中選擇一項或多項。該控件默認顯示一列選項。當ListBox控件的MultiColumn屬性為True時,列表中以多列形式顯示項。如果項數多于控件可顯示的項數時,則自動添加滾動條。
28.32 在ListView控件中實現文本的搜索 528
ListView控件可以多行多列地顯示數據,當顯示大數據量時,要想從ListView控件檢索數據是一項艱難的事情。本示例說明了這件事情的解決方法。
28.33 在RichTextBox控件中啟用拖放操作 529
在Microsoft Word文檔中選擇文檔中的內容,然后使用鼠標左鍵進行拖放操作。RichTextBox控件也提供了此功能的支持。
28.34 使用TextBox控件的自動完成功能 531
TextBox控件是一個普通的文本框控件。該控件提供給用戶輸入和顯示文本。
第29章 Windows對話框 533
29.1 使用OpenFileDialog打開文本文件 534
OpenFileDialog對話框是一個選擇文件的組件。該組件允許用戶選擇要打開的文件,指定組件的Filter屬性可以過濾文件類型。
29.2 使用FolderBrowserDialog選擇文件夾 535
FolderBrowserDialog對話框是可以一個瀏覽、選擇和新建文件夾的組件。
29.3 通過ColorDialog設置顏色 536
ColorDialog對話框是一個專門設置顏色的組件。該組件可以讓用戶從調色板中選擇顏色,也可以將自定顏色添加到調色板。
29.4 通過FontDialog設置文本字體 537
FontDialog對話框是一個設置字體的組件。該組件允許用戶選擇當前安裝在計算機的字體,還可以設置字體的字形、大小、刪除線、下畫線和字符集。
29.5 通過PageSetupDialog顯示打印設置 539
PageSetupDialog組件是一個打印預設置的對話框。該組件可讓用戶設置打印頁,如邊距、紙張方向。
29.6 通過PrintDialog打印 540
PrintDialog組件是一個打印預設置的對話框。PrintDialog組件可以選擇打印機,并設置打印機的屬性,可以指定打印范圍和打印份數。
29.7 顯示消息框 542
消息框是可顯示包含文本、按鈕和符號的對話框。
第30章 Windows圖形編程 544
30.1 窗體上繪制空心橢圓和空心矩形 545
繪制橢圓和矩形的方法相似,都需要指定畫筆對象、坐標和矩形的大小。本示例將演示在Windows窗體上繪制空心橢圓和空心矩形。
30.2 繪制垂直文本 546
Graphics類的DrawString方法用于繪制文本內容,該方法有6個重載,使用不同的重載可以繪制不同排列方式的文本。本示例將演示如何繪制垂直文本。
30.3 創建單一圖形的路徑 547
GraphicsPath對象允許將矩形、橢圓、多邊形、線等添加到一個單獨單元中。然后通過Graphics類的DrawPath方法把所有圖形當做一個整體繪制出來。
30.4 創建水平漸變顏色的線條 548
要使圖形的顏色實現漸變,可以使用梯度刷來繪制圖形。
30.5 創建縮略圖像 549
Graphics類封裝了繪制圖形的所有方法和屬性,其中DrawImage方法用于繪制圖像,也可以指定繪制的圖像大小。
30.6 對區域使用剪輯 550
區域是輸出設備顯示區域的一部分,常用于剪輯和點擊檢測。剪輯需要把繪制限制到一個特定的矩形或區域。
30.7 繪制不透明和半透明的線條 551
繪制線條必須使用Pen對象傳遞到Graphics類的DrawLine方法。Pen類是表示為一個畫筆,畫筆對象必須要指定顏色。
30.8 加載和顯示位圖 552
位圖,又稱光柵圖,是由許多像小方塊一樣的像素組成的圖形。Bitmap類由封裝的位圖及其屬性的像素數據組成,該類繼承于Image類。本示例將演示如何加載和顯示位圖。
30.9 使用DrawString繪制居中文本 553
與使用DrawString繪制垂直文本相似,使用該方法也可以繪制居中的文本。本示例將演示如何使用DrawString方法繪制居中的文本。
30.10 使用DrawText繪制居中文本 554
在窗體上繪制居中文本,可以使用TextRenderer類提供的靜態方法實現。其提供了一組static方法,可用于在Windows窗體控件上測量和繪制文本。
30.11 使用復合模式控制Alpha混合 555
在GDI+中顏色使用一個32位的值表示,Alpha、紅色、綠色和藍色各占8位。其中Alpha表示顏色與背景色的混合程度,也就是透明度。
30.12 使用路徑漸變填充橢圓 556
GDI+中的路徑是通過組合直線、矩形和簡單的曲線而形成的,如要通過漸變的填充路徑所包含的圖形,可以使用PathGradientBrush類。
30.13 旋轉、反射和扭曲圖像 557
在繪制圖像時,通過指定原始圖像的左上角、右上角和左下角的目標點可旋轉、反射和扭曲圖像。這三個目標點確定將原始矩形圖像映射為平行四邊形的仿射變換。
30.14 用不透明和半透明的畫刷繪制圖形 558
與繪制半透明的線條相似,把畫刷的顏色的Alpha分量設置為255,則表示為不透明,如果Alpha分量設置為1到254之間,則表現為半透明。
30.15 縮放時使用插值模式控制圖像質量 559
使用Graphics類的DrawImage方法繪制圖像時,可以指定繪制的圖像大小。若要收縮圖像,必須將原始圖像中成組的像素映射為較小圖像中單個的像素。
第六篇 .NET特性篇
第31章 反射與程序集 562
31.1 使用Type類查看類型信息 563
System.Type類對于反射起著核心的作用。當反射請求加載類型時,公共語言運行庫將為它創建一個System.Type對象。
31.2 創建應用程序域 564
AppDomain類表示應用程序域,當需要應用程序域時,公共語言運行庫宿主會自動創建它們。
31.3 定義和執行動態方法 565
通過System.Reflection名稱空間中的MethodInfo類可以了解方法的名稱、返回類型、參數、訪問修飾符(如public或private)和實現的詳細信息(如abstract或virtual)等。
31.4 獲取程序集的類型和成員信息 568
Assembly類表示程序集,通過該類的實例可以獲取程序集的相關信息。
31.5 獲取程序集的完整名稱 570
Assembly類的實例表示一個程序的信息,通過該類的實例可以查詢程序集相關信息。
31.6 將程序集加載到應用程序域 572
將程序集加載到應用程序域有較多的方法,最常用的是使用Assembly類的靜態方法Load來加載。
31.7 判斷文件是否為程序集文件 573
加載程序時常遇到程序集文件被破壞的情況,所以在使用程序集前通常需要驗證其有效性。本示例將演示如何反射來檢測程序集文件是否有效。
31.8 配置應用程序域 575
每個應用程序域都包含一個名稱/值對的集合,宿主可以將有關域的信息存儲在這些名稱/值對中。
31.9 使用反射檢查和實例化泛型類型 576
泛型同普通類型一樣,也可以通過反射來獲取其類型并創建對應的實例,泛型的特別之處在于其擁有一個或者多個表示其泛型類型參數的Type對象。
31.10 卸載應用程序域 578
應用程序創建了自己的應用程序域后,當不再需要該域時,可以將它卸載。卸載應用程序采用AppDomain類的靜態方法Unload。

第32章 線程 580
32.1 多線程的創建實例 581
Windows系統是一種搶先式的多任務系統,即線程之間共享同一個時間段,并把該時間段分割為時間片。
32.2 獲取線程編號 582
當線程創建時,系統為線程分配一個唯一標識符的編號。用以作為分配時間片的上下文標識。本示例主要說明了如何在程序中獲取線程的編號。
32.3 使用線程池 584
線程池指的是位于系統緩沖區中的線程集合,為了避免程序頻繁地創建和釋放線程對象,系統在內存緩沖區中定義了一個保存線程的區域。
32.4 使用線程的優先級 586
線程具有優先級的概念,在C#編程語言中,可以為線程指定5種優先級,即Highest、AboveNormal、Normal、BelowNormal和Lowest。
32.5 使用線程同步事件處理線程 587
在多線程編程中,線程同步事件處理是一項重要的技術。
32.6 同步線程的創建和使用 590
在C#編程語言的多線程應用程序中,雖然同步線程很容易創建,但是在使用同步線程時,經常出現搶占共享資源的情況。本示例演示了解決這個問題的方法。
32.7 線程的創建與終止 591
在C#編程語言中,通過Thread類中定義的方法,能夠對指定的線程執行多種控制,包括在終止當前正在執行的線程。
32.8 線程的睡眠與中斷 593
在多線程編程的實際應用中,為了協調多個線程的執行次序和資源共享,大多數場合建議使用優先級、事件通知和互斥體的方式,線程的睡眠和中斷并非常用方式。
第33章 注冊表編程 595
33.1 遍歷注冊表項中的所有值 596
在注冊表的項中,可以包含三種不同類型的值。分別是字符串、二進制值和雙字節值。本示例將演示如何獲取指定項的值,包括子項中的值。
33.2 創建注冊表項 597
RegistryKey類表示Windows注冊表的項,該類封裝了對注冊表的訪問。本示例將演示如何使用RegistryKey類來創建注冊表項。
33.3 刪除注冊表項 598
前一示例演示了使用RegistryKey類創建注冊表的項,RegistryKey類還可以用于刪除注冊的項。本示例將演示如何使用RegistryKey類刪除注冊表項。
33.4 刪除注冊項中的值 599
每個注冊表的項都可以包含一個或一個以上的值,其中必定包含一個“默認”值,該值是不允許刪除的,其他值可以通過RegistryKey類刪除。

33.5 設置注冊表項的名稱和值 600
注冊表項的值包含值的名稱和值的數據。在一些情況下,需要修改或添加注冊表項中的值的名稱和數據。RegistryKey類封裝了此功能的方法。
33.6 通過界面操作注冊表 601
本示例將實現一個系統啟動項的管理器,通過Windows界面操作注冊表。
第34章 COM的互操作 604
34.1 Word拼寫檢查 605
Word拼寫檢查是COM互操作的典型范例,為了使用Word的拼寫檢查功能,應在項目中添加Word的COM組件的引用。
34.2 播放AVI文件 607
在程序中播放AVI文件有多種實現的方法,其中使用COM互操作技術能夠利用現有的媒體播放控件在程序中播放AVI文件。
34.3 播放波形文件 610
在程序中播放波形文件有多種方式的實現,.NET Framework的后期版本中雖然提供了直接播放波形文件的支持,但不是所有版本的.NET Framework都支持這一功能。
34.4 創建Excel電子表格 615
在.NET Framework中,能夠通過Office中的COM組件在程序中實現創建Excel電子表格,將程序數據輸出為Excel文件。
34.5 創建復雜的Excel文件 617
使用COM互操作技術不僅能夠進行簡單的數據輸出,還能創建并保存復雜的Excel文件,包括在Excel文件中統計數據和創建圖表。
34.6 創建復雜的Word文件 621
通過COM互操作技術能夠與多種Office應用程序進行交互,與Word程序互操作。
34.7 關閉注銷重啟計算機 625
為了實現重啟計算機的目的,需要調用位于“user32.dll”動態庫中名為“ExitWindowsEx”的API函數。
34.8 獲取和設置系統時間 630
在Windows系統中,獲取和設置系統時間有多種方式,其中使用Windows API函數實現適用于大部分的Windows操作平臺,包括Windows CE操作系統。
34.9 簡單的MP3播放器 632
COM互操作能夠和現有的Windows技術相結合,利用非托管代碼本身所具有的功能進行開發,通過一個mp3實例來說明。
34.10 實現互操作的回調函數 638
在Windows API的函數中,包含一類特殊函數,其只提供系統元素枚舉,而不實現對這些元素的操作處理,至于對元素作何操作,藉由外部傳入的函數參數來實現。
第35章 本地化 640
35.1 分析Unicode數字 641
Unicode標準為各種腳本的數字定義了代碼值。例如,介于U+09E6到U+09EF之間的代碼值指定孟加拉文數字0到9。
35.2 根據特定區域性格式化日期和時間 642
日期和時間的顯示格式可以根據不同的區域顯示不同的格式。DateTime是一個結構體,用于表示時間上的一刻,通常以日期和當天的時間表示。
35.3 根據特定區域性格式化數值 643
數值類型可以表示為多種標準數字格式字符串。這些字符串受區域性的影響,不同的區域顯示格式不同。
35.4 根據特定區域性進行排序 645
字母的排序順序隨區域性的不同而不同。例如,排序順序可以區分大小寫,也可以不區分大小寫。
35.5 獲取本地區域名稱 646
在Windows操作系統中,用戶可以通過“控制面板”中的“區域選項”對話框更改“用戶區域”,或者更改與“用戶區域”相關的設置。
35.6 獲取區域具體信息 647
CultureInfo類保存區域性特定的信息,如關聯的語言、子語言、國家/地區、日歷和區域性約定。
35.7 獲取區域性名稱列表 649
在Windows系統中,默認安裝了一些區域性,用戶也可以創建自定義區域性。本示例將演示如何獲取這些區域性。
第七篇 .NET其他應用篇
第36章 控制臺應用 652
36.1 從控制臺獲取鍵入的內容 653
在控制臺應用程序中使用Console.ReadKey(true)獲取用戶輸入的信息。
36.2 控制臺程序的聲音控制 654
在控制臺應用程序中主要使用Console類的靜態的Beep方法控制聲音,該方法有兩個重載,可以指定聲音的頻率和時間。
36.3 清除控制臺顯示 655
在控制臺應用程序中,使用Console類的Clear方法可以清空窗口的所有顯示信息,清空信息后,光標自動滾動到窗口的左上角。
36.4 設定控制臺窗口大小 656
控制臺應用程序的窗口的默認大小為:高度為25,以行為單位。寬度為80,以列為單位。可以通過編程的方法使用Console類的屬性和方法改變窗口的大小。
36.5 設定控制臺光標位置 658
在控制臺窗口中寫入一個字符后,光標都會自動移動到下一個字符位置。
36.6 設定屏幕緩沖區的高度和寬度 659
屏幕緩沖區是控制臺的一個屬性,以由行和列組成的矩形網格的形式進行組織,其中每個網格交叉位置(字符單元格)都可包含一個字符。
36.7 設置控制臺顏色 661
在控制臺應用程序中,緩沖區的前景色默認為“Gray”,背景色默認為“Black”。通過Console類的屬性可以改變在緩沖區輸入的每個字符的前景色和背景色。
36.8 改變控制臺的標準輸出流 662
控制臺程序的標準輸出流包含在Console類的Out屬性中,這個流默認輸出到控制臺的緩沖區。此屬性可以使用其他流代替,例如輸出到磁盤文件的流。
36.9 改變控制臺的標準輸入流 663
控制臺程序的標準輸入流包含在Console類的In屬性中,這個流默認從控制臺的緩沖區獲取輸入的內容。
第37章 Web服務 665
37.1 Web服務的對象繼承 666
在.NET Framework中提供了System.Web.Services命名空間,用于處理Web服務的命名空間。
37.2 創建ASP.NET Web服務 667
VS2008中提供了創建Web服務項目的模板,使用該模板編程人員能夠方便地創建WebService程序,并發布在指定的網站上。
37.3 從瀏覽器訪問Web服務 669
Web服務發布以后,可以通過瀏覽器的HTTP-GET或者HTTP-POST調用。
37.4 創建Web服務的方法說明和消息名 671
在Web方法中,為了客戶端調用時能夠明確Web方法的功能,可以在Web方法聲明時為該方法指定說明文字和消息名稱。
37.5 創建并處理Web服務異常 673
Web服務程序常用于處理調用端的請求,當調用端的數據或調用方法不符合Web服務的要求時,Web服務需要創建異常消息發送給調用端。
37.6 定義和處理Web服務的SOAP頭 676
為了能夠與調用端進行多種方式的數據傳遞,Web服務中定義了表示SOAP頭的SoapHeader類。
37.7 使用ASP.NET程序調用Web服務 678
Web服務可為多種平臺的應用程序提供服務,在ASP.NET程序調用Web服務時,需要將該Web服務應用到項目中。
37.8 使用Web服務管理狀態 680
ASP.NET為Web應用程序引入了狀態概念,WebService類實現了在服務器端完成對ASP.NET的狀態的管理功能。
37.9 使用Web服務中的事務 689
WebService服務中的事務,基于在COM+服務的分布式事務模式創建。通過指定Web方法的屬性值,能夠控制方法的事務行為。
37.10 使用Windows程序調用Web服務 692
Web服務能夠提供多種操作系統平臺的調用,在.NET Framework中可以使用Windows程序調用Web服務中提供的功能。
37.11 使用控制臺程序調用Web服務 696
.NET Framework的控制臺程序能調用Web服務,只要在控制臺應用程序中添加對Web服務的引用即可。
37.12 Windows身份驗證Web服務 699
為了提高Web服務的安全性能,在Web服務中有必要對調用端的身份進行驗證,從而達到防止未驗證用戶調用Web服務的目的。
37.13 通過ASP.NET異步訪問Web服務 701
在ASP.NET應用程序調用Web服務時,Web服務提供的方法有可能會執行一段時間,為了提高程序執行效率,此時應該在ASP.NET程序中使用異步訪問Web服務的技術。
37.14 通過Windows程序異步訪問Web服務 705
Web服務代理生成的異步調用方法中,除了Begin/End調用機制以外,還提供了事件異步調用的機制。
37.15 在Web服務客戶端上啟用輸出緩存 708
在Web服務上使用輸出緩存,能夠提高Web服務的性能,在客戶端啟用輸出緩存時,將Http請求及返回的結果保存在客戶端。
第38章 Windows服務與Remoting分布式應用 711
38.1 使用服務控制控件管理服務 712
ServiceController組件可以訪問安裝在Windows上的服務信息,包括運行或者已停止的服務。
38.2 檢索服務列表 713
ServiceController組件類提供了一些靜態的方法,可以使用這些方法獲取系統中安裝的所有服務。
38.3 創建自動發送郵件的Windows服務 715
Windows服務應用程序是一種需要長期運行的應用程序,例如管理系統時鐘的服務和管理打印的服務。
38.4 創建與調用Http通道Remoting服務 717
Remoting是通過通道(channel)來實現兩個應用程序域之間對象的通信。Remoting的通道分為Tcp和Http兩種。
38.5 創建與調用Tcp通道Remoting服務 720
Remoting的另一種通道Tcp通道,這種通道提供了基于Socket的傳輸工具,使用Tcp協議來跨越Remoting邊界傳輸序列化的消息流。
38.6 異步遠程調用 722
同步調用時如果調用的方法需執行很長時間,在大數據量的情況下,調用線程將等待調用完成后再執行下一操作,這影響了性能。為解決此問題可使用異步調用方法。
第39章 Office應用之Excel篇 725
39.1 Excel的ListObject區域排序 726
ListObject是Excel應用中允許輸入數據的列表控件,使用該控件能夠列出數據表的指定字段和數據行。
39.2 Excel的NamedRange區域排序 727
在VSTO中,NamedRange表示可命名的單元格范圍,該范圍能夠指定名稱,并提供了對單元格范圍的操作方法。
39.3 NamedRange控件的事件編程 729
NamedRange控件具有BeforeDoubleClick、Change、SelectionChange等事件,在程序中編寫這些事件的處理方法,能夠對Excel指定范圍單元格的操作進行響應。
39.4 創建Excel菜單 731
菜單在軟件應用中扮演組織訪問應用程序功能的角色。VSTO提供了簡單的創建Excel菜單的方法,并能夠創建用戶自定義的默認菜單。
39.5 將Excel單元格綁定到表中的多個列 733
Excel中的ListObject控件能夠和程序中的數據源進行綁定,綁定后的ListObjext即時反映數據源的數據變化。
39.6 將Excel單元格綁定到數據庫字段 734
在VSTO的Excel工作簿項目中,不僅ListObject控件指定的單元格范圍可以綁定到數據表,NamedRange控件也可以將Excel單元格綁定到數據庫字段。
39.7 將Windows窗體信息顯示到Excel單元格中 737
基于VSTO創建的Excel工作簿解決方案,能夠直接使用.NET Framework的 Windows控件,包括Form窗體。
39.8 將數據綁定到Excel操作窗格上的控件 739
Excel工作簿應用程序中的操作窗格允許在編程時添加Windows控件,通過Windows控件的數據綁定功能可以在操作窗格上顯示和操作數據源中的數據。
39.9 將樣式應用于工作簿范圍 741
在VSTO平臺中開發的Excel工作簿應用程序,能夠創建自定義的樣式并應用于工作簿范圍。
39.10 使用單選按鈕更新工作表中的圖表 743
基于VSTO創建的Excel工作簿解決方案,能夠在Excel工作簿程序中直接使用自定義的Windows控件,來實現用戶對Excel表操作的功能。
39.11 使用復選框控件更改Excel工作表格式設置 747
通過向Excel工作簿項目添加控件,可以利用Windows控件的屬性、事件和方法,對Excel工作簿的內容進行一些基本操作。
39.12 使用緩存在Excel中顯示數據庫記錄 749
在Excel工作簿項目中,能夠使用Excel文檔保存數據集中的數據,在脫機時也能使用Excel文件瀏覽數據集的查詢結果,此功能稱為緩存技術。
39.13 在Excel中實現日期的選擇 751
Excel的單元格允許多種數據類型,包括.NET Framework中的一些標準結構,例如.NET Framework中的日期類型變量,能夠直接賦值給Excel單元格的Value2屬性。
39.14 在Excel中實現數據的校驗 752
在Excel中提供了校驗數據的功能,前提是制訂了相應數據有效性的校驗規則。基于VSTO開發的Excel工作簿項目,也能夠使用數據校驗功能保證數據的正確。
39.15 在Excel中實現文字的排列方式 754
Excel中的文字具有多種排列方式,以滿足不同場合的需要,在一些格式比較特殊的報表中,需要對單元格中文字的排列方式進行調整。
39.16 在Excel中搜索字符 755
為了在程序中處理瀏覽數據,需要在Excel工作簿中搜索指定的字符。使用VSTO編寫的Excel工作簿項目,提供了單元格范圍內搜索字符的支持。
39.17 在包含選定單元格的工作表行中更改格式設置 758
基于VSTO創建的Excel工作簿項目的工作表類,定義了一系列的事件。默認生成的代碼中聲明了啟動工作表和關閉工作表事件的處理方法。
第40章 Office應用之Word篇 761
40.1 操作窗格數據綁定 762
基于VSTO編寫的Word應用程序能夠與數據庫進行交互,并能使用向操作窗格添加自定義控件的方法,提供操作數據庫的界面。
40.2 創建Word表 766
使用一個名為“ThisDocument”的類,描述當前文檔的數據結構,并提供操作的方法,向該集合中添加Table元素,即可在Word文檔中創建表格。
40.3 創建Word工具欄 768
基于VSTO創建的Word文檔項目中,能夠使用程序添加自定義的工具欄,并能向工具欄中添加功能按鈕,通過處理功能按鈕的單擊事件,實現預定的功能。
40.4 創建書簽的快捷菜單 771
在基于VSTO創建的Word文檔項目中,能夠為書簽創建自定義的快捷菜單,在這些菜單中定義程序所需的功能按鈕,為最終用戶提供便捷的操作方式。
40.5 計算Word文檔中的字符數 774
Word應用程序中提供了計算Word文檔中字符數的功能,基于VSTO創建的Word文檔項目中,也能夠通過編程的方式獲取文檔中包含的字符數。
40.6 檢索Word文檔范圍中的開始字符和結束字符 776
在ThisDocument類中,定義了“句”的集合屬性,該屬性包含了當前文檔中的所有句子,該集合屬性配合Range類使用能夠對文檔中的句子進行編程。本示例主要說明了如何在程序中檢索Word文檔范圍中的開始字符和結束字符。
40.7 向Word表添加行和列 777
基于VSTO創建的Word文檔項目,能夠通過對Tables成員進行操作,向Word表中的指定位置添加行和列。
40.8 在Word文檔中插入文本 779
在Word文檔中以兩種方式插入文本,一種是在文檔中使用Range接口的Text屬性,一種是在Word文檔中選擇一段文字作為Selection接口的實例。
40.9 在Word文檔中定義和選擇范圍 782
在基于VSTO的Word文檔項目中,為了對一段文字進行操作,經常需要在程序中選擇Word文檔的范圍。
40.10 在文檔中設置文本格式 784
Word文檔中能夠使用各種方式設置文本的格式,其中使用樣式來設置文本格式。
40.11 在文檔中搜索文本 785
Word文檔中的搜索包括兩種方式的搜索,一種方式是選擇內容的搜索,另一種方式是指定范圍內的搜索。
序: