《C#應用程序設計教程(第2版)》介紹C#客戶端應用程序設計技術,內容包括:C#語言基礎、wpf和winform應用程序開發(fā)、圖形和圖像編程、文件讀/寫和管理、多線程應用、socket編程、ado.net數據庫應用程序設計等!禖#應用程序設計教程(第2版)》采用實例教學法,在講清基本知識點的基礎上,盡量使用短小精悍的實例加以說明,使內容容易理解!禖#應用程序設計教程(第2版)》使用微軟免費的速成版集成開發(fā)環(huán)境。《C#應用程序設計教程(第2版)》所有例子在.net framework 3.5下調試通過,大部分例子使用wpf控件。
《C#應用程序設計教程(第2版)》可作為高等院!懊嫦驅ο體indows程序設計”教材,或作為學習使用C#語言開發(fā)應用程序的培訓班教材,也適合使用C#語言開發(fā)項目的程序員參考。
計算機專業(yè)開設的第一門高級程序設計語言課程一般是C或C++,學習高級程序設計語言基本知識,編寫控制臺或DOS應用程序。在此之后應進一步學習面向對象Windows應用程序設計,一方面為操作系統(tǒng)、數據庫、計算機網絡、計算機圖形學等后續(xù)課程提供程序設計基礎,另一方面也盡早為學生課外實踐提供一個實用工具。本課程是為上述目的而設置的,是計算機導論和C或C++課程的后續(xù)課程。單純講授面向對象理論的效果并不好,結合某個面向對象語言的方法會有更好的教學效果。本書用c#語言介紹面向對象程序設計概念。
學習面向對象Windows應用程序設計應采用廣泛使用又適合教學的工具和語言?紤]到Visual C++學習難度較大,Visual Basic(以下簡稱VB)雖然易學,但還要耗費很緊張的學時學習一門新語言,是得不償失的。而c撐語言是為.NET架框量身定做的新一代面向對象的語言,語法和C++非常相似,但比C++簡單,使用組件編程,和VB一樣容易使用。在第一門高級程序設計語言課程是C或C++的情況下,學習c#語言可節(jié)約很多學時,對于根本沒有接觸過VB的大學生,把c#作為學習面向對象Windows應用程序設計語言是合適的。當前用C#語言開發(fā).NET系統(tǒng)的商用軟件較多,這也為學生畢業(yè)后工作打下較好基礎。
第1章 C#語言基礎
1.1 C#語言特點
1.2 編寫控制臺應用程序
1.3 類的基本概念
1.3.1 類的基本概念
1.3.2 類成員的存取控制
1.3.3 類的對象
1.3.4 類的構造函數、構造函數重載和析構函數
1.3.5 使用person類的完整的例子
1.3.6 程序調試與異常處理
1.4 c#的數據類型
1.4.1 值類型和引用類型的區(qū)別
1.4.2 值類型變量分類
1.4.3 結構類型
1.4.4 簡單類型
1.4.5 枚舉類型
1.4.6 值類型的初值和默認構造函數
1.4.7 可空類型
1.4.8 引用類型分類
1.4.9 object類
1.4.10 數組類
1.4.11 字符串類(string類)
1.4.12 類型轉換
1.4.13 泛型和泛型集合
1.4.14 隱式類型局部變量(var)
1.5 運算符
1.5.1 運算符分類
1.5.2 溢出檢查操作符checked和unchecked
1.5.3 new運算符
1.6 程序控制語句
1.6.1 c#語言語句和c語言語句的不同點
1.6.2 foreach語句
1.6.3 異常語句
1.6.4 using語句
1.7 類的繼承
1.7.1 派生類的聲明格式
1.7.2 隱藏基類方法
1.7.3 base關鍵字
1.7.4 c#語言類繼承特點
1.8 類的成員
1.8.1 類的成員類型
1.8.2 類成員訪問修飾符
1.9 類的字段和屬性
1.9.1 靜態(tài)字段、實例字段、常量和只讀字段
1.9.2 屬性
1.9.3 對象初始化器
1.9.4 自動屬性
1.9.5 匿名類型
1.10 類的方法
1.10.1 方法的聲明
1.10.2 方法中參數的傳遞
1.10.3 靜態(tài)方法和實例方法
1.10.4 方法的重載
1.10.5 操作符重載
1.10.6 this關鍵字
1.10.7 擴展方法
1.11 類的多態(tài)性
1.12 抽象類和抽象方法
1.13 密封類和密封方法
1.14 靜態(tài)類和靜態(tài)類成員
1.15 c# 2.0中的分部類
1.16 使自定義類支持foreach語句
1.17 接口
1.17.1 接口聲明
1.17.2 接口的繼承
1.17.3 類對接口的實現
1.18 委托類型
1.19 事件
1.19.1 事件驅動
1.19.2 事件的聲明
1.19.3 事件的預訂和撤銷
1.19.4 匿名方法
1.19.5 lambda表達式
1.20 索引指示器
1.21 命名空間
1.21.1 命名空間的聲明
1.21.2 命名空間使用
1.22 linq
習題
第2章 wpf編程基礎
2.1 windows編程接口和類庫
2.2 gdi和wpf
2.3 textblock、label和button控件
2.4 wpf控件通用屬性
2.5 wpf程序基本結構
2.6 application類和window類
2.7 用vs2008創(chuàng)建wpf程序
2.8 控件的z-序
2.9 xaml標記和類型轉換器
2.10 代碼隱藏
2.11 解決方案和項目
2.12 事件處理函數的參數
2.13 textbox和passwordbox控件
2.14 radiobutton、groupbox和expander
2.15 checkbox(復選框)控件
2.16 定時器和datetime類
2.17 listbox(列表框)控件
2.18 路由事件
2.19 combobox(下拉列表組合框)控件
2.20 布局面板和scrollviewer
2.21 附加屬性
2.22 樣式、樣式觸發(fā)器和資源
2.23 模板和模板觸發(fā)器
2.24 依賴屬性和控件樹
2.25 數據綁定和標記擴展
2.26 listview等列表控件數據綁定
2.27 綁定數據源為自定義類
2.28 利用異常對輸入數據驗證
2.29 自定義驗證規(guī)則
2.30 正則表達式類regex類
2.31 菜單、command和鍵盤事件
2.32 快捷菜單
2.33 togglebutton和repeatbutton
2.34 工具條
2.35 狀態(tài)欄控件和鼠標事件
2.36 各種wpf應用程序
2.37 綜合例子:計算器
2.38 類庫和自定義控件
習題
第3章 wpf文本編輯器
3.1 文檔布局
3.2 richtextbox控件
3.3 command實現編輯功能
3.4 存取文件
3.4.1 openfiledialog和savefiledialog類
3.4.2 存取文件功能實現
3.5 about對話框
3.6 文本編輯器查找替換功能
3.6.1 模式對話框和非模式對話框
3.6.2 查找替換功能的實現
3.7 提示用戶保存已被修改的文件
3.7.1 messagebox類
3.7.2 提示保存已被修改的文件
3.8 打印和打印預覽
3.8.1 打印對話框printdialog
3.8.2 打印
3.8.3 打印預覽
3.9 多選項卡頁的文本編輯器
習題
第4章 文件和流
4.1 用流讀/寫文件
4.1.1 filestream類讀/寫字節(jié)
4.1.2 binaryreader、binarywriter類讀/寫基本數據類型
4.1.3 streamreader和streamwriter類讀/寫字符串
4.1.4 序列化
4.1.5 stream類的其他派生類
4.2 file類和fileinfo類
4.2.1 file類常用的方法
4.2.2 判斷文件是否存在
4.2.3 刪除文件
4.2.4 復制文件
4.2.5 移動文件
4.2.6 設置文件屬性
4.2.7 得到文件的屬性
4.3 directory類和directoryinfo類
4.3.1 directory類常用的方法
4.3.2 判斷目錄是否存在
4.3.3 創(chuàng)建目錄
4.3.4 刪除目錄
4.3.5 移動目錄
4.3.6 獲取當前目錄下的所有子目錄
4.3.7 獲取當前目錄下的所有文件
4.3.8 設置目錄屬性
4.4 例子:在指定文件夾中查找文件
4.5 例子:鼠標拖放打開文件
4.6 例子:拆分和合并文件
習題
第5章 wpf圖形圖像編程
5.1 wpf和gdi
5.2 常用的結構
5.2.1 point和size結構
5.2.2 rect結構
5.2.3 color結構
5.3 用shape的派生類繪圖
5.3.1 公用屬性
5.3.2 畫線控件line
5.3.3 畫矩形控件rectangle
5.3.4 畫圓或橢圓控件ellipse
5.3.5 控件polyline和polygon
5.3.6 控件path
5.4 用drawing的派生類繪圖
5.4.1 繪圖基本方法
5.4.2 geometry類
5.4.3 geometrygroup類
5.4.4 combinedgeometry類
5.5 用visual類的派生類繪圖
5.5.1 繪圖基本方法
5.5.2 drawingcontext類方法
5.6 pen類和brush類
5.6.1 pen類
5.6.2 solidcolorbrush畫刷
5.6.3 lineargradientbrush畫刷
5.6.4 radialgradientbrush畫刷
5.6.5 imagebrush畫刷
5.6.6 tilebrush類
5.6.7 drawingbrush畫刷
5.6.8 visualbrush畫刷
5.7 圖形變換
5.7.1 transform派生類
5.7.2 transformgroup類
5.7.3 matrix結構
5.7.4 matrixtransform類
5.7.5 控件的變換
5.7.6 drawing類圖形變換
5.7.7 visual類圖形變換
5.8 位圖效果
5.9 處理圖像
5.9.1 顯示圖像文件
5.9.2 將矢量圖形保存為位圖文件
5.9.3 彩色圖像變換為灰度圖像
5.9.4 處理圖像每一點顏色
5.10 圖像剪貼板功能
5.10.1 剪切復制區(qū)域選定
5.10.2 剪貼板復制功能的實現
5.10.3 剪貼板剪切功能的實現
5.10.4 剪貼板粘貼功能的實現
5.11 3d圖形
5.11.1 3d圖形學基礎
5.11.2 繪制3d圖形例子
5.11.3 分析例子xaml標記
5.11.4 照相機和投影
5.11.5 定義3d模型形狀
5.11.6 背面剔除
5.11.7 光源
5.11.8 材質
5.11.9 紋理
5.11.10 3d圖形變換
5.11.11 代碼繪制3d圖形
5.12 directx 3d和xna介紹
習題
第6章 多媒體
6.1 wpf動畫
6.1.1 傳統(tǒng)實現動畫方法
6.1.2 doubleanimation類動畫
6.1.3 其他動畫類
6.1.4 關鍵幀動畫
6.1.5 基于路徑的動畫
6.2 音頻支持
6.2.1 soundplayer類
6.2.2 soundplayeraction類
6.2.3 mediaplayer類
6.2.4 mediaelement類
6.2.5 mediatimeline類
6.3 視頻支持
6.3.1 mediaelement類
6.3.2 mediatimeline類
6.3.3 mediaplayer類
6.4 語音功能介紹
習題
第7章 進程和多線程
7.1 進程
7.1.1 process類
7.1.2 用代碼啟動和停止進程
7.1.3 得到進程信息
7.2 創(chuàng)建線程
7.2.1 線程類(thread)的屬性和方法
7.2.2 用thread類創(chuàng)建線程
7.2.3 用dispatcher類訪問控件
7.2.4 委托異步調用方法
7.2.5 異步文件讀/寫
7.2.6 單線程完成費時工作
7.2.7 backgroundworker類
7.3 線程并發(fā)、互斥和死鎖
7.3.1 多個線程同時修改共享數據可能發(fā)生錯誤
7.3.2 用lock語句實現互斥
7.3.3 用mutex類實現互斥
7.3.4 用monitor類實現互斥
7.4 同步生產者和消費者線程
7.4.1 生產者線程和消費者線程不同步可能發(fā)生錯誤
7.4.2 生產者線程和消費者線程同步的實現
習題
第8章 socket編程初步
8.1 tcp/ip和socket
8.1.1 tcp/ip
8.1.2 套接字
8.2 基于tcp的socket編程
8.2.1 tcpclient類
8.2.2 tcplistener類
8.2.3 服務器程序
8.2.4 客戶機程序
8.2.5 tcp的socket實例
8.2.6 異步tcp編程
8.2.7 基于tcp的p2p技術
8.3 基于udp的socket編程
8.3.1 基于udp的編程
8.3.2 用udp實現廣播和組播
習題
第9章 數據庫應用程序設計
9.1 兩類數據庫應用程序
9.2 vs2008創(chuàng)建數據庫
9.3 結構化查詢語言sql
9.4 連接數據庫
9.5 創(chuàng)建連接數據庫應用程序
9.5.1 oledbcommand和sqlcommand類
9.5.2 oledbdatareader和sqldatareader類
9.6 不連接數據庫應用程序及數據綁定
9.6.1 sqldataadapter和dataset類
9.6.2 datatable、dataview和datarow類
9.6.3 數據庫表的數據綁定
9.7 學生信息管理系統(tǒng)設計
9.7.1 學生查詢窗口
9.7.2 項目數據源
9.7.3 學生登錄功能
9.7.4 管理員管理窗口
9.7.5 主從關系
9.7.6 編輯、刪除和增加記錄功能
9.7.7 將修改數據存回原數據庫
9.7.8 查詢
9.7.9 教師登分窗口
9.8 combobox綁定到數據庫表
9.9 存儲過程
9.10 linq to ado.net
9.10.1 linq to dataset
9.10.2 linq to sql
習題
第10章 可擴展標記語言
10.1 xml基本概念
10.1.1 sgml
10.1.2 xml
10.1.3 xml的文檔格式
10.1.4 xpath表示xml文檔路徑
10.2 xml文檔顯示
10.2.1 定義xml文檔顯示格式
10.2.2 xml文件轉換為html文件
10.2.3 treeview控件和xml數據綁定
10.3 查詢xml文檔
10.3.1 xmltextreader類查詢xml
10.3.2 xmldocument類查詢xml
10.3.3 xpathnavigator類查詢xml
10.3.4 xdocument和linq to xml
10.4 編輯xml文檔
10.4.1 xmltextwriter類寫xml文檔
10.4.2 xmldocument類編輯xml文檔
10.4.3 xdocument編輯xml文檔
10.5 xml架構
10.5.1 dtd或xml schema定義xml架構
10.5.2 用xml schema驗證xml架構
10.6 數據庫和xml
習題
第11章 web服務和wcf基礎
11.1 web服務和wcf的概念
11.1.1 web服務的概念和用途
11.1.2 web服務的局限
11.1.3 wcf技術
11.1.4 wcf基本結構
11.2 和web服務兼容的wcf服務
11.2.1 建立web服務
11.2.2 wsdl
11.2.3 配置文件web.config
11.2.4 建立客戶端程序
11.3 其他宿主的wcf服務
11.3.1 建立wcf服務
11.3.2 建立客戶端程序
11.3.3 雙工協(xié)定
11.4 使用web服務的例子
11.4.1 使用wcf服務返回數據庫表
11.4.2 用web服務傳送圖形文件
習題
第12章 windows form編程
12.1 winform和wpf的不同點
12.2 winform控件編程基礎
12.2.1 最簡單的winform程序
12.2.2 用vs2008創(chuàng)建winform程序
12.2.3 winform和wpf常用控件異同
12.2.4 菜單控件menustrip
12.2.5 工具條控件toolstrip
12.2.6 狀態(tài)欄控件statusstrip
12.3 文本編輯器
12.3.1 richtextbox控件
12.3.2 多文檔文本編輯器
12.4 gdi圖形圖像編程
12.4.1 畫筆pen類和畫刷類
12.4.2 使用graphics類
12.4.3 窗體的paint事件
12.4.4 bitmap類和picturebox控件
12.5 數據庫
12.5.1 bindingsource組件
12.5.2 bindingnavigator控件 309
12.5.3 學生信息管理系統(tǒng)設計
習題
參考文獻
(1)通用語言規(guī)范(Common Language Specification,CLS)。.NET系統(tǒng)包括C#、C++、VB、J#,它們都遵守通用語言規(guī)范。任何程序設計語言只要遵守通用語言規(guī)范,其源程序都可編譯為相同的中間語言代碼,由CLR負責執(zhí)行,這樣的代碼叫托管代碼。只要為其他操作系統(tǒng)編制相應的CLR,中間語言代碼也可在其他系統(tǒng)中運行。
(2)自動內存管理。CLR內建垃圾收集器,當堆中實例的生命周期結束時,垃圾收集器負責收回不被使用的實例占用的內存空間。也就是說,CLR具有自動內存管理功能。而c和c++語言,用語句在堆中建立的實例,必須用語句釋放實例占用的內存空間。
(3)交叉語言處理。由于任何遵守通用語言規(guī)范的程序設計語言源程序,都可編譯為相同的中間語言代碼,不同語言設計的組件可以互相通用,可以從其他語言定義的類派生出本語言的新類。由于中間語言代碼由CLR負責執(zhí)行,因此異常處理方法是一致的,這在調試一種語言調用另一種語言的子程序時,顯得特別方便。