Visual Basic 2005程序設(shè)計教程

出版時間:2009-2  出版社:清華大學出版社  作者:郭興峰,廖建軍,周明輝 編著  頁數(shù):349  

前言

  Microsoft Visual Basic 2005是從Visual Basic語言演變而來的,它是一種類型安全和面向?qū)ο蟮恼Z言。Visual Basic允許開發(fā)人員開發(fā)面向Windows、Web和移動設(shè)備的程序。與所有基于Microsoft .NET Framework的語言一樣,使用Visual Basic編寫的程序都具有安全性和語言互操作性方面的優(yōu)點。  本書面向Visual Basic初中級用戶,全面、系統(tǒng)地介紹了使用Visual Basic 2005開發(fā)應用程序的基礎(chǔ)知識、基本方法和具體應用。當然,如果您是一名高手,那么這本書也將是一本極好的參考書。  本書由淺入深,層層遞進地講解了使用Visual Basic 2005開發(fā)應用程序的技術(shù)。本書共分為14章,包括Visual Studio 2005開發(fā)環(huán)境,Visual Basic語法,面向?qū)ο蠡靖拍畹慕榻B,Windows窗體和常用控件,菜單、工具欄和狀態(tài)欄,鼠標和鍵盤事件,對話框,文件操作等技術(shù)的講解,以及使用Visual Basic開發(fā)數(shù)據(jù)庫程序、Web網(wǎng)站、ActiveX的應用、應用程序的調(diào)試和錯誤處理等高級內(nèi)容,最后介紹了應用程序的安裝和部署?! 〉?章對Visual Basic 2005進行了簡要介紹。首先介紹了.NET Framework,然后介紹了Visual Studio 2005的開發(fā)環(huán)境,最后通過一個實例介紹了如何使用Visual Basic開發(fā)一個Windows應用程序?! 〉?章講解了程序設(shè)計基礎(chǔ)。首先介紹了數(shù)據(jù)類型和表達式,然后介紹了程序結(jié)構(gòu)——順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu),最后介紹了子過程和函數(shù)?! 〉?章講解了面向?qū)ο蟮某绦蛟O(shè)計的基本思想。首先講解了面向?qū)ο蟪绦蛟O(shè)計的基本概念,然后講解了類和對象,最后講解了命名空間和Me關(guān)鍵字?! 〉?章講解了Windows窗體。首先介紹了窗體的屬性、方法和事件,然后講解了多文檔和單文檔的概念,最后通過一個例子展示了多文檔程序的開發(fā)過程?! 〉?章講解了Windows常用控件。主要包括Label、TextBox、Button、CheckBox、Radio Button、ListBox、Combobox、ListView、TreeView、TabControl等內(nèi)容。通過對這些控件的學習,讀者可以達到舉一反三的效果。  第6章講解了菜單、工具欄和狀態(tài)欄。首先介紹了主菜單和彈出式菜單,然后介紹了工具欄的使用,最后介紹了狀態(tài)欄的設(shè)計和使用?! 〉?章講解了鼠標和鍵盤事件。首先介紹了鼠標的常見事件,然后介紹了鍵盤事件以及檢測Shift、Ctrl及Alt鍵的狀態(tài),最后介紹了如何中斷后臺處理?! 〉?章講解了對話框。首先介紹了通用對話框,包括顏色對話框、字體對話框、打開文件對話框、保存文件對話框以及瀏覽目錄對話框,然后介紹了預定義對話框,最后介紹了自定義對話框?! 〉?章介紹了文件操作。首先介紹了文件的基本概念,然后介紹了如何創(chuàng)建文件以及對文件進行刪除和讀寫操作,最后介紹了如何操作文件夾?! 〉?0章介紹了如何開發(fā)數(shù)據(jù)庫程序。首先介紹了ADO.NET的基本概念。然后介紹了.NET數(shù)據(jù)提供程序的Connection對象、Command對象、DataReader對象、DataAdapter對象。最后介紹了DataSet組件的結(jié)構(gòu)和用法?! 〉?1章介紹了Web應用程序開發(fā)。首先介紹了如何建立Web應用程序的運行環(huán)境,然后介紹了Visual Basic .NET在開發(fā)Web應用程序時的作用,最后介紹了Visual Basic .NET開發(fā)Web程序的常用類和常用控件?! 〉?2章介紹了如何使用ActiveX部件。主要包括使用ActiveX部件的步驟、釋放ActiveX部件、處理ActiveX部件的運行錯誤和掛起的請求。最后通過使用多媒體控件MMControl詳細地講解了使用ActiveX部件的步驟?! 〉?3章介紹了應用程序的調(diào)試和錯誤處理。首先介紹了應用程序的調(diào)試,然后介紹了如何對應用程序的錯誤進行處理?! 〉?4章介紹了應用程序的安裝和部署。程序員工作的最終目的是把開發(fā)的程序交付給用戶使用,這部分內(nèi)容講解了如何對Windows應用程序和Web程序進行打包。為了運行這些代碼,讀者需要配置一個運行環(huán)境,需要安裝Visual Basic 2005中文企業(yè)版,詳細的配置請參考本書具體章節(jié)的介紹?! ”緯闪谓ㄜ?、周明輝、王艷梅編寫,參與本書編寫和修改的還有葉明、崔寧、盧宏、汪昔玉、衛(wèi)平峰、程冬丁、王勤、張銳、汪小鋒、李葵、葉浩、肖飛、宋海劍、林勇、朱衡等人員。在此,編者對他們致以誠摯的謝意!  由于本書涉及的范圍比較廣泛,作者的經(jīng)驗有限,時間倉促,書中難免有不足之處,敬請廣大讀者、專家提出寶貴意見。

內(nèi)容概要

Visual Basic 2005是微軟推出的一種功能強大的開發(fā)語言,它具有類型安全和完全面向?qū)ο蟮奶攸c。Visual Basic可以用于程序開發(fā)的許多領(lǐng)域,如桌面程序、數(shù)據(jù)庫開發(fā)、網(wǎng)站開發(fā)等,它上手容易、功能強大,越來越受到廣大程序員和編程愛好者的青睞。  本書共分14章,系統(tǒng)地介紹了如何使用Visual Basic 2005開發(fā)應用程序,具體包括Visual Studio 2005開發(fā)環(huán)境、Visual Basic的語法、面向?qū)ο蟮母拍?、Windows窗體的使用、控件的使用、對話框、文件操作、數(shù)據(jù)庫開發(fā)、網(wǎng)站開發(fā)、使用ActiveX部件、應用程序的調(diào)試和錯誤處理以及應用程序的安裝和部署等內(nèi)容?! ”緯攸c明確,結(jié)構(gòu)合理,語言簡明,書中實例均為作者在本領(lǐng)域工作中的真實案例,具有很強的實用性。本書可作為高等學校計算機相關(guān)專業(yè)的教材,也可作為Visual Basic初、中級用戶的自學用書。

書籍目錄

第1章  Visual Basic 2005簡介	 1.1  .NET Framework 2.0概述	 1.2  Visual Studio 2005開發(fā)環(huán)境	 1.3  經(jīng)典實例Hello	 1.4  習題	第2章  程序設(shè)計基礎(chǔ)	 2.1  數(shù)據(jù)類型和表達式	 2.2  程序結(jié)構(gòu)	 2.3  子過程和函數(shù)過程	 2.4  習題	第3章  面向?qū)ο蟮某绦蛟O(shè)計	 3.1  面向?qū)ο蟪绦蛟O(shè)計的基本概念	 3.2  類和對象	 3.3  類的高級主題	 3.4  命名空間	 3.5  Me關(guān)鍵字	 3.6  習題	第4章  Windows窗體	 4.1  初識Windows窗體	 4.2  窗體屬性	 4.3  窗體事件	 4.4  窗體方法	 4.5  多文檔窗體界面	 4.6  習題	第5章  常用控件	第6章  菜單、工具欄和狀態(tài)欄	第7章  鼠標和鍵盤事件	第8章  對話框	第9章  文件操作	第10章  數(shù)據(jù)庫應用程序開發(fā)	第11章  Web應用程序開發(fā)	第12章  使用ActiveX部件	第13章  應用程序的調(diào)試和錯誤處理	第14章  安裝和部署

章節(jié)摘錄

  第13章 應用程序的調(diào)試和錯誤處理  Visual Basic 2005有著非常豐富的調(diào)試工具,讀者必須在不斷的使用中熟練地掌握它們,這對于編寫和開發(fā)稍大的應用程序非常重要。在編寫大型應用程序時,會顯得更加至關(guān)重要?! ≡诎l(fā)布應用程序給其他用戶之前,測試應用程序并盡可能地改正錯誤是非常重要的。本章介紹如何使用Visual Basic.NET的調(diào)試工具,同時介紹幾個技巧將使應用程序出錯的可能性降低到最小,并在出錯時盡快找出它們。這些技巧包括:用詳細的注釋歸檔代碼,使用調(diào)試工具等?! o論多么仔細精巧地制作代碼,都可能(而且很可能)會出現(xiàn)錯誤。例如在運行中,可能會遇到意外而中止程序,或者由于程序的本身缺陷,導致錯誤。好的應用程序應該包含錯誤處理代碼,在出現(xiàn)錯誤的時候,能夠?qū)﹀e誤進行處理,使程序能夠繼續(xù)運行或安全地退出,減少錯誤帶來的麻煩。本章在最后將介紹如何在程序中使用錯誤處理語句處理錯誤。本章結(jié)束的時候,相信讀者已經(jīng)能夠有效地歸檔、調(diào)試程序代碼,使程序具有很強的生命力?! ”菊轮攸c內(nèi)容:  * 歸檔程序代碼  * 熟練使用各種調(diào)試工具  * 使用斷點中斷程序的執(zhí)行  * 結(jié)構(gòu)化錯誤處理  13.1 歸檔程序代碼  在深入研究如何使用Visual Basic 2005的調(diào)試工具之前,先看一看預防性的措施。雖然它的效果不一定能明顯地表現(xiàn)出來,但清晰、簡明、一致的文檔是良好代碼的基本條件?! 〖记桑骸 w檔代碼時,最重要的是保持一致性。這意味著使用同樣的注釋、命名、代碼布局樣式。如果學會采用歸檔代碼的方法來積極有效地開發(fā)應用程序,將縮短花在調(diào)試上的時間。  13.1.1 給程序代碼增加注釋  用注釋作為程序代碼文檔幾乎像程序代碼本身一樣重要,注釋可以用來標識一行代碼、一個過程、一個代碼模塊甚至整個程序段。如果已經(jīng)完成了以前的例子,那么就已經(jīng)看到并使用了注釋。最明顯的注釋符是單引號。只要單引號被插入到某一行中,單引號之后的該行中的內(nèi)容都是注釋,并且注釋以不同的顏色顯示出來(默認的顏色為綠色)?! ∪绾问褂米⑨屢蕾囉谧x者的風格和習慣,下面將介紹一些有效的歸檔程序代碼的方法?! ?. 應用程序級  在開發(fā)大的項目時,編程人員被分成若干組去開發(fā)項目的不同部分,每個小組使用單獨的生成系統(tǒng)(Build System),這個生成系統(tǒng)是一個安裝所有第三方控件并且具有各種Visual Basic版本的中央計算機。組件的需求就顯得尤為重要,因為安裝應用程序時常常無法知道哪些資源是必需的。為了解決這個問題,創(chuàng)建一個單獨的模塊。這個模塊除了具有對項目的注釋外,不含其他的信息,它使用如下格式:    應用程序名稱  版本  版權(quán)  服務(wù)器  客戶端  作者/公司  用途  最低需求    當上面的注釋區(qū)被填滿后,注釋應該看起來如下所示:    應用程序名稱     Kill Happy Time Virsus  版本         1.0  版權(quán)         2001-免費軟件  作者/公司    張三/紅軟科技公司  用途         殺毒軟件  最低需求       CPU:主頻1GB以上,內(nèi)存:512MB以上  客戶端        Windows 9x /NT4.0  服務(wù)器        MS SQL2000    這個應用程序級的注釋文件包含在應用程序中;當其他人檢查這個應用程序時,通過這段描述文件就可以知道要想使用這個應用程序正確地編譯和運行需要哪些資源?! ?. 模塊級  描述每個模塊的目的比歸檔應用程序的特殊細節(jié)和需要更重要的多,這一點在多個開發(fā)人員同時使用一個包含需要重復使用的特定函數(shù)時尤為明顯?! ∠旅媸峭扑]使用的在模塊級注釋的代碼,它能讓要使用該模塊的其他編程人員很快了解所有必要的信息,縮短開發(fā)時間,并能開發(fā)出一致的、標準的應用程序?!   ∥募 ∽髡摺 ∪掌凇 ∶枋觥 ∫蕾噹臁 「隆   ∠旅媸翘钊胱⑨尩睦樱骸   ∥募        ?MyBrowser  作者          	張三  日期          	2001-4-25  描述          	這是一個動態(tài)鏈接庫,包含了創(chuàng)建瀏覽器所需的方法  依賴庫         	不需要  更新          2001-4-25創(chuàng)建  	2001-5-6 添加刷新函數(shù)    技巧:  如果要生成可復用代碼、類模塊,可以在模塊的全局定義中加入注釋,以說明整個模塊中的過程、需求以及這個模塊的獨立性,保證其他編程人員確切地了解如何在它們的應用程序中使用這些代碼。  3. 過程級  在用戶定義的或不明顯的過程及函數(shù)的開頭加入注釋是十分有用的,這些注釋將幫助讀者或其他編程人員確切地理解并記住過程的功能、用法。例如:    過程:     		AddUser()  作者         	張三  日期          	2001-5-6  描述       	這個函數(shù)的作用是在域中添加一個全局用戶  需求       	為了這個函數(shù)正常工作,必須首先提供用戶ID和密碼  提示:  在編寫類或標準模塊時,可在模塊的全局定義中加入注釋,用來說明這個模塊中的屬性、方法和事件以及這個模塊的獨立性,保證其他編程人員確切地了解如何在它們的程序中使用這些代碼。  4. 代碼級  注釋可以深入到任何一級,可以直接將注釋放到代碼行中。當某行代碼十分值得注意時,在這行后面加入注釋是非常重要的。在使用注釋符時,可以根據(jù)自己的習慣對注釋符進行擴展,以代表更多的含義。表13-1是推薦使用的幾種注釋符?! ”?3-1 推薦使用的注釋符  注釋符說明  一般的注釋。它可以用在那些不需特別注意的地方  ??  有問題的代碼,編輯代碼的時候,總有一些地方覺得需要改進或存在問題,標出來引起注意,這對于程序的維護和調(diào)試是非常有益的  !!  需要引起注意的代碼  最基本的注釋符是單引號。無論將這個符號放在一行代碼的中間還是字符串的后面,單引號右面的文本都被注釋掉了。運用這一點,就可以發(fā)現(xiàn)一些靈活而有用的注釋技巧,就像上面列出的那樣?! ”M管這些技巧是非常有用的,但不是絕對的??梢詣?chuàng)建自己的注釋符集合,但是,一定注意,集合的內(nèi)容不要太多,否則難于記憶,而且要保持所有應用程序一致性,這對于節(jié)省調(diào)試時間是絕對重要的?! ?3.1.2 使用命名規(guī)則  除了在代碼中寫注釋以外,還應該使用統(tǒng)一的命名方式,即命名規(guī)則來為組件命名。命名規(guī)則有助于代碼更可讀、更明了。下面介紹Visual Basic中使用的命名規(guī)則?! ∶鸙isual Basic應用程序中的元素時,名稱的首字符必須為字母字符、數(shù)字或下劃線。但是,注意,以下劃線開頭的名稱不符合公共語言規(guī)范(CLS)?! ∫韵陆ㄗh適用于命名:  * 名稱中各單詞首字母均為大寫,如FindLastRecord和RedrawMyForm?! ? 函數(shù)名和方法名以動詞開始,如InitNameArray和CloseDialog。  * 類名、結(jié)構(gòu)名、模塊名和屬性名以名詞開始,如EmployeeName或CarAccessory中。  * 接口名稱以前綴I開始,后面接一個名詞或名詞詞組(如IComponent),或者接一個描述接口行為的形容詞(如IPersistable)。不要使用下劃線,不要過多使用縮寫,因為縮寫會引起混淆?! ? 事件處理程序的名稱以一個描述事件類型的名詞開始,后面接后綴EventHandler,如MouseEventHandler?! ? 事件參數(shù)類的名稱里要加EventArgs后綴。  * 如果某事件含有“之前”或“之后”的概念,則以現(xiàn)在時或過去時形式使用前綴,如ControlAdd或ControlAdded?! ? 對于長項或常用項,可使用縮寫使名稱長度適中。例如,可以使用HTML代替HyperText Markup Language。通常,多于32個字符的變量名在低分辨率的監(jiān)視器上難以閱讀。同時,應確保縮寫在整個應用程序中保持一致。在項目中隨意在HTML和HyperText Markup Language之間切換可能會導致混淆?! ? 在內(nèi)部范圍中避免使用與外部范圍中的名稱相同的名稱。如果訪問了錯誤的變量,則可能會產(chǎn)生錯誤結(jié)果。若變量與同一名稱的關(guān)鍵字沖突,則必須在關(guān)鍵字前加適當?shù)念愋蛶煲宰鳂俗R。例如,如果有一個名為Date的變量,通過調(diào)用 System.DateTime.Date只可以使用內(nèi)部 Date 函數(shù)?! ? 常量名最好全部大寫,盡量使用全名,使用下劃線連接不同單詞,如USER_ID?! ? 控件和窗體命名使用前綴?! ?3.1.3 編寫結(jié)構(gòu)化的代碼  除了注釋和命名規(guī)則外,另一個歸檔代碼的方法是編寫結(jié)構(gòu)化的代碼,即使用制表符和空格使代碼在代碼窗口中以縮進形式排列。在Visual Basic 2005中默認的制表符是4個空格,但是可以通過IDE中的“工具”|“選項”命令,打開“選項”對話框,選擇“文本編輯器”|Basic|“編輯器”,來設(shè)置制表符的空格個數(shù)和縮進量,如圖13-1所示?! D13-1 設(shè)置制表符  Visual Basic 2005的代碼編輯器已經(jīng)具有了自動縮進功能(可以禁止這些功能),主要是對于過程級代碼和控制語句,如下面的代碼:  Public Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)  Dim a As Integer = 0  If a > 5 Then  a = 0  Else  a = a + 1  End If  End Sub  所有的縮進是由程序自動完成的,不需要自己手動調(diào)節(jié)。讀者所要做的是設(shè)置這些縮進量、在控制語句內(nèi)部條件不同層次語句之間的縮進量以及添加清晰的注釋?! ?3.2 Visual Studio 2005調(diào)試器的新增功能  和原來版本的調(diào)試技術(shù)相比,Visual Studio 2005增加了許多新的功能。下面簡單介紹一些重要的新增功能。  * Visual Basic的“編輯并繼續(xù)”功能:可以在調(diào)試應用程序時更改VB代碼,同時還可以繼續(xù)運行應用程序。此功能讓我們能夠迅速修復錯誤、測試新功能和修改現(xiàn)有功能,從而提高工作效率?! ? 遠程調(diào)試更為安全、設(shè)置更為簡便:通過將單個可執(zhí)行程序復制到遠程計算機來設(shè)置遠程調(diào)試,而無需使用復雜的設(shè)置指令或注冊。遠程調(diào)試現(xiàn)在更為安全和可靠。此外,現(xiàn)在可以調(diào)試64位的托管應用程序和非托管應用程序?! ? 增強的調(diào)試器數(shù)據(jù)提示功能:調(diào)試器的“數(shù)據(jù)提示”得到了改進??梢栽谠创a編輯器中直接定位復雜數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,還可以從“數(shù)據(jù)提示”中打開可視化工具,以直觀和自然的格式查看數(shù)據(jù)。  * “僅我的代碼”調(diào)試:此功能使我們可以將注意力集中在自己編寫的代碼上,而忽略自己不感興趣的代碼。  * 跟蹤點和改進的斷點用戶界面:斷點不再僅用于進行中斷。跟蹤點是一種使用斷點執(zhí)行自定義操作的新方法。使用跟蹤點,可以輸出消息或運行Visual Studio自動化宏,決定當調(diào)試器命中跟蹤點時是中斷還是繼續(xù)。用戶界面得到了改進,使得設(shè)置所有斷點更為輕松快捷?! ? Visual Basic異常助手:新增的“異常助手”對話框能夠在Visual Basic程序中發(fā)生異常時提供更好的信息?! 〕松厦嫣岬降墓δ芡?,Visual Studio 2005還在許多方面進行了改進,這里就不再一一介紹了。如果使用過早期的Visual Studio軟件,就會發(fā)現(xiàn)和早期的版本相比,Visual Studio 2005帶來了更多便利。  13.3 調(diào) 試 工 具  .NET Framework SDK包含名為Visual Debugger的工具,我們可以在運行應用程序時使用該工具來調(diào)試代碼。此工具位于%ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\GuiDebug\DbgCLR.exe中。在使用該調(diào)試器時,可以通過在執(zhí)行應用程序時逐句執(zhí)行每條語句,以及通過查看每個變量中的數(shù)據(jù)來準確了解應用程序的工作方式?! ∈褂肰isual Debugger可以在運行代碼時對代碼進行檢查,該程序中包含下列可以幫助調(diào)試應用程序的功能:  * 斷點:斷點是代碼中調(diào)試器將要停止應用程序的位置。可以使用斷點查看應用程序的當前數(shù)據(jù)狀態(tài),然后逐句通過每一行代碼?! ? 單步執(zhí)行:當在斷點處停止后,即可逐行運行代碼(稱為單步執(zhí)行代碼)?! ? 數(shù)據(jù)查看:Visual Debugger為在運行應用程序時查看和跟蹤數(shù)據(jù)提供了許多不同的選項。調(diào)試器允許開發(fā)人員在以中斷模式停止應用程序時修改數(shù)據(jù),然后使用修改過的數(shù)據(jù)繼續(xù)運行應用程序?! ∽⒁猓骸 isual Studio?2005的“編輯并繼續(xù)”功能對于 Web 應用程序不可用?! ≌{(diào)試程序時,需要注意權(quán)限的問題。調(diào)試進程比執(zhí)行該進程需要更多的特權(quán)。因此,除了要為調(diào)試配置應用程序外,還必須確保有足夠的權(quán)限附加到進程,以便調(diào)試該進程。用戶有權(quán)調(diào)試在他們自己的用戶本地標識下運行的進程,但不能調(diào)試其他用戶的進程。管理員可以調(diào)試任何進程?! ∠旅娼榻B如何使用調(diào)試工具?! ?3.3.1 調(diào)試工具欄  在Debug菜單中有所有的調(diào)試命令和工具,為了提供更方便的快速訪問與使用這些命令和工具,Visual Basic 2005提供了調(diào)試工具欄,如圖13-2所示?! D13-2 調(diào)試工具欄  下面按照從左到右的順序介紹這些按鈕?! ? 啟動/繼續(xù)按鈕:用來啟動當前的工程,進入調(diào)試狀態(tài)。除了使用這個按鈕,還可以使用“調(diào)試”|“啟動調(diào)試”命令或者直接按F5鍵?! ≌f明:  幾乎所有的調(diào)試工具都有快捷鍵。例如,啟動/繼續(xù)是F5鍵,停止調(diào)試是Ctrl+Shift +Break鍵等,記住快捷鍵可以提高調(diào)試的效率,而且有時候按按鈕不方便時(如全屏運行),只能使用快捷鍵。  * 全部中斷:調(diào)試器將停止所有在調(diào)試器下運行的程序。程序并不退出,可以隨時恢復執(zhí)行。調(diào)試器和應用程序現(xiàn)在處于中斷模式。  * 停止調(diào)試:如果程序是從Visual Studio啟動的,則“停止調(diào)試”終止正調(diào)試的進程。如果程序附加到進程,而不是從Visual Studio啟動,則該進程仍繼續(xù)運行?! ? 逐語句按鈕:使用逐語句按鈕可以每次只執(zhí)行一行代碼。如果該行包含函數(shù)調(diào)用,則僅執(zhí)行調(diào)用本身,然后在函數(shù)內(nèi)的第一個代碼行處停止。它的快捷鍵是F8?! ? 逐過程按鈕:每次執(zhí)行一行代碼,如果該行包含函數(shù)調(diào)用,則執(zhí)行整個函數(shù),然后在函數(shù)外的第一行處停止,快捷鍵是Shift+F8?! ? 跳出按鈕:在函數(shù)內(nèi)部單擊該按鈕,一直執(zhí)行代碼,直到函數(shù)返回,然后在調(diào)用函數(shù)中的返回點處中斷??旖萱I是Ctrl+Shift+F8?! ?3.3.2 使用調(diào)試工具窗口  有時可以通過運行部分代碼來查找問題產(chǎn)生的原因。但是,經(jīng)常要做的往往還是分析數(shù)據(jù)到底發(fā)生了什么變化??梢栽谟嘘P(guān)變量或?qū)傩缘膯栴}中將不正確的值放到一邊,然后確定變量或?qū)傩允侨绾蔚玫讲徽_的值的,為什么會得到這些值?! ≡谥鸩竭\行應用程序的語句時,可用調(diào)試窗口監(jiān)視表達式和變量的值。常用的調(diào)試窗口有即時窗口、監(jiān)視窗口、輸出窗口、局部變量窗口、調(diào)用堆棧窗口。下面進行介紹。  1. 即時窗口  即時窗口顯示代碼中正在調(diào)試的語句所產(chǎn)生的信息,也可以顯示直接往窗口中輸入的命令所請求的信息。即時窗口如圖13-3所示?! D13-3 即時窗口  有時,當調(diào)試或試驗一個應用程序時,可能要執(zhí)行單個過程、對表達式求值或者為變量或?qū)傩再x予新的值??捎眉磿r窗口完成這些任務(wù)??梢酝ㄟ^在即時窗口中顯示表達式來計算表達式的值?! τ诒O(jiān)視表達式,這有多個優(yōu)點:用戶可以得到反饋信息,以獲得關(guān)于應用程序執(zhí)行的情況,而不必中斷執(zhí)行。在運行應用程序時,可看到顯示出的數(shù)據(jù)或其他信息。由于在一個單獨的區(qū)域內(nèi)(即時窗口)顯示反饋,所以反饋不會影響用戶看到的輸出。又因為可以把這個代碼作為窗體的一部分來保存,所以下次處理應用程序時不必重新定義這些語句。  在即時窗口計算表達式或變量很簡單,使用問號(?)命令直接把信息顯示到即時窗口中??稍诹⒓创翱谥杏嬎闳魏斡行У谋磉_式,包括調(diào)用了屬性的表達式。當前活動窗體或模塊決定了表達式的范圍。如果在與窗體或類相關(guān)聯(lián)的代碼內(nèi)中止了執(zhí)行,則可像下面代碼這樣引用那個窗體(或其控件之一)的屬性:  ? Button1.Enabled  2. 監(jiān)視窗口  監(jiān)視窗口是最常使用的代碼調(diào)試窗口,如圖13-4所示。監(jiān)視窗口在運行時監(jiān)視和觀察對象的變量,可以在監(jiān)視窗口中看到多個屬性,單擊監(jiān)視窗口的按鈕就可以看到監(jiān)視窗口。監(jiān)視窗口動態(tài)地監(jiān)視變量的更新。  圖13-4 監(jiān)視窗口  3. 局部變量窗口  局部變量窗口顯示當前堆棧的所有變量及其值。局部變量窗口中的值在每次由運行模式到中斷模式時或堆棧內(nèi)容發(fā)生改變時會自動更新。局部變量窗口不僅顯示變量的值,而且也顯示對象的情況。局部變量窗口如圖13-5所示?! D13-5 局部變量窗口  4. 輸出窗口  在調(diào)試或運行程序時最先看到的是輸出窗口,它顯示程序的編譯和運行情況,如圖13-6所示。除此以外,輸出窗口可以顯示程序中正在調(diào)試的語句所產(chǎn)生的信息,即使用Debug對象的Write、WriteLine方法時,產(chǎn)生的調(diào)試輸出結(jié)果?! D13-6 輸出窗口  5. 調(diào)用堆棧窗口  調(diào)用堆棧窗口里面顯示了已經(jīng)裝入但沒有完成的過程,如圖13-7所示。該圖顯示了Form1窗體的Button1控件的Click事件被裝入,而沒有運行完成。有時該窗體也顯示其他的一些被裝入而未運行的過程。  圖13-7 調(diào)用堆棧窗口  13.4 斷  點  斷點就是程序中定義的一個位置,在那里程序可被暫時停止執(zhí)行,控制權(quán)交給調(diào)試器。程序暫停期間,可以檢查和修改不同的程序參數(shù),并可以通過單步執(zhí)行代碼或從當前語句繼續(xù)執(zhí)行等操作來往下執(zhí)行。一般來說,斷點可以告訴調(diào)試器,在斷點之前的所有指令都是正確的,調(diào)試器不需要浪費時間去單步執(zhí)行它們。Visual Basic中可以設(shè)置多種類型的斷點,常用的包括位置斷點、條件斷點、命中次數(shù)斷點,后面將依次介紹這些斷點?! ?3.4.1 位置斷點  位置斷點主要是由其位置發(fā)揮作用的,即當程序運行到設(shè)立斷點的地方時程序?qū)O聛怼! ∥恢脭帱c是最簡單的設(shè)置斷點的方式,只要把光標移到要設(shè)斷點的位置,當然這一行必須包含一條有效的語句,然后從“調(diào)試”菜單中選擇“切換斷點”命令或按F9鍵或在上下文菜單中選擇“斷點”|“插入斷點”命令,就會在屏幕上看到在這一行的左邊出現(xiàn)一個紅色的圓點,表示這行設(shè)置了一個斷點,如圖13-8所示?! D13-8 位置斷點  若要刪除一個斷點,只需把光標移到設(shè)置斷點的代碼行處,然后從“調(diào)試”菜單中選擇“切換斷點”命令或按F9鍵,就會在屏幕上看到在這一行左邊出現(xiàn)的紅色的圓點消失,表示這行的斷點已經(jīng)刪除。  13.4.2 條件斷點  條件斷點是位置斷點的擴展方式,當程序執(zhí)行到帶標記的指令時,如果指定的條件是真,調(diào)試器就會響應條件斷點。在同一指令執(zhí)行數(shù)百次的循環(huán)中,設(shè)置在該循環(huán)中的位置斷點在每次重復過程中都會停止執(zhí)行,這是我們所不希望的。條件斷點僅在某些情況發(fā)生時中斷指令,例如當循環(huán)次數(shù)達到100時?! ≡O(shè)置條件斷點的方法為:首先設(shè)置好位置斷點,然后在位置斷點上單擊鼠標右鍵,在彈出的快捷菜單中選擇“條件”命令,彈出如圖13-9所示的對話框。  圖13-9 設(shè)置條件斷點  在“條件”文本框中輸入中斷時的判斷條件,可以選擇在滿足條件時中斷,也可以在條件改變時中斷。  13.4.3 命中次數(shù)斷點  默認情況下,每次命中斷點時執(zhí)行都中斷。使用命中次數(shù)斷點,可以選擇:  * 總是中斷(默認設(shè)置)。  * 命中次數(shù)等于指定值時中斷?! ? 命中次數(shù)等于指定值的倍數(shù)時中斷。  * 命中次數(shù)大于或等于指定值時中斷。  如果要跟蹤斷點的命中次數(shù)但不中斷執(zhí)行,可以將命中次數(shù)設(shè)置為一個很高的值以便永不命中斷點。需要注意的是,僅為調(diào)試會話期間保留指定的命中次數(shù)。在調(diào)試會話結(jié)束時,命中次數(shù)將重置為零?! ≡O(shè)置命中次數(shù)斷點的方法為:首先設(shè)置好位置斷點,然后在位置斷點上單擊鼠標右鍵,在彈出的快捷菜單中選擇“命中次數(shù)”命令,彈出如圖13-10所示的對話框?! D13-10 命中次數(shù)斷點  如果不選擇“命中斷點時總是中斷”,則下拉列表框中會出現(xiàn)一個文本框,用于讓用戶輸入斷點命中多少次后中斷?! ∠旅嫱ㄟ^一個例子進一步了解如何使用斷點。步驟如下: ?。?) 創(chuàng)建一個名為chap13的解決方案,然后在該解決方案中添加一個名為DebugTest的項目?! 。?) 在該項目默認創(chuàng)建的窗體Form1上添加一個Button控件。雙擊該控件,創(chuàng)建該控件的Click事件,在該事件中添加如下代碼:  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  Button1.Click  For i As Integer = 0 To 100  Label1.Text = i.ToString()  Next  End Sub  這段代碼十分簡單,執(zhí)行的功能為循環(huán)100次,每次把i的值顯示到Label控件上。我們主要是通過這段代碼來演示如何設(shè)置斷點。 ?。?) 把光標移到Label1.Text = i.ToString()所在的行,按F9鍵,設(shè)置斷點,如圖13-11所示?! D13-11 設(shè)置位置斷點  (4) 在斷點處單擊鼠標右鍵,從彈出的快捷菜單中選擇“命令次數(shù)”,在“斷點命中次數(shù)”對話框的“命中斷點時下拉列表框中選擇“中斷,條件是命中次數(shù)等于”,然后在下拉列表框右側(cè)的文本框中輸入50,如圖13-12所示?! D13-12 設(shè)置命中次數(shù)  (5) 單擊“確定”按鈕關(guān)閉該對話框,然后按F5鍵開始運行程序。單擊Button1按鈕,發(fā)現(xiàn)程序運行到i=49時中斷。因為i是從0開始執(zhí)行的,所以i等于49時正好運行了50次。此時可以使用前面介紹的調(diào)試工具窗口來查看變量的信息,這里就不再介紹了。讀者可以自己使用調(diào)試工具窗口進行查看。  13.5 結(jié)構(gòu)化錯誤處理  就理想的情況而言,Visual Basic過程根本不需要錯誤處理代碼。遺憾的是,我們并沒有生活在一個理想世界里。有時文件會被誤刪除、磁盤驅(qū)動器空間會溢出、網(wǎng)絡(luò)驅(qū)動器會意外地分離。這些可能發(fā)生的事情都能在代碼中引起運行時錯誤。為了處理這些錯誤,需要將錯誤處理代碼添加到過程中。有時,錯誤也可能出現(xiàn)在代碼內(nèi)部,通常稱這類錯誤為缺陷。例如,像光標不聽指揮之類的小缺陷就足以令人感到沮喪并深感不便。更嚴重的缺陷可能還會使應用程序不再對命令做出響應,這時,可能要重新啟動應用程序,從而使已經(jīng)完成但尚未存儲的工作丟失。因而在程序中編寫錯誤處理代碼是非常重要的?! ?3.5.1 On Error語句  Visual Basic 6中已經(jīng)使用了On Error Goto語句來捕獲和處理錯誤,在Visual Basic 2005中該功能被保留下來。下面簡單介紹它的使用,Visual Basic 6的高手可以略過這段內(nèi)容。使用一個錯誤處理的例子來說明如何使用On Error語句。步驟如下:  (1) 在該解決方案chap13中添加一個名為OnErrorTest的項目?! 。?) 修改該項目的默認窗體Form1的Text屬性為演示OnError,并在Form1中增加一個Timer控件,設(shè)置其Enabled屬性為True,創(chuàng)建該控件的Tick事件,并在該事件中增加如下代碼:  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  Timer1.Tick  Dim msg As Integer  Dim counter As Integer  如果檢測到任何一個錯誤,則開始捕獲錯誤,并響應錯誤處理程序  Label1.Text = "我們邂逅了:" & counter.ToString & "秒!"  On Error GoTo check  counter = Integer.MaxValue  counter += 1  Exit Sub  語句標號,以下是錯誤處理語句  check:  Timer1.Stop()  從消息框中選擇重試還是放棄  msg = MsgBox("Error Find ", Microsoft.VisualBasic.MsgBoxStyle.RetryCancel, "Error")  如果選擇重試,返回到出錯的行,重新執(zhí)行  If msg = 4 Then  Resume  如果放棄則退出應用程序  Else  End  End If  End Sub  執(zhí)行該程序,程序開始執(zhí)行后,很快彈出錯誤對話框,如圖13-13所示。  如果單擊“重試”按鈕,則繼續(xù)彈出該對話框。如果單擊“取消”按鈕,則關(guān)閉該程序?! ‖F(xiàn)在簡單解釋一下錯誤處理語句?! ? On Error語句:用來捕獲程序中的錯誤?! ? Goto語句:跳轉(zhuǎn)語句,一般用來調(diào)轉(zhuǎn)到錯誤處理程序段?! ? Resume語句:重新啟動,當錯誤處理完成后,重新回到出錯的語句,繼續(xù)向下執(zhí)行。  上面代碼中,定時器啟動時每隔0.1秒執(zhí)行Tick事件,因為把counter賦為最大整數(shù),然后再對counter加1會產(chǎn)生溢出錯誤。因此會進入On Error語句中,程序執(zhí)行直接跳轉(zhuǎn)到check處。在check處,程序首先彈出“錯誤”對話框,如果單擊“重試”按鈕,則程序繼續(xù)從發(fā)生錯誤處執(zhí)行,因為該錯誤還存在,所以會繼續(xù)彈出“錯誤”對話框。如果單擊“取消”按鈕,則End語句被調(diào)用,該程序自動退出?! ?3.5.2 使用Try…Catch…Finally…End Try塊  使用On Error錯誤處理代碼的最大缺點是不靈活,不穩(wěn)定,不符合結(jié)構(gòu)化的程序設(shè)計(有Goto語句)。在Visual Basic 2005中增加了新的結(jié)構(gòu)化錯誤處理語句,來代替這些錯誤處理語句,它們是Try…Catch…Finally…End Try。通過這些語句可以集中處理錯誤。下面介紹它的使用。  Try…Catch…Finally…End Try語句的語法如下:  Try  statements  Catch  statements  Catch  statements  …  Finally  statements  End Try  將可能出錯的語句放在Try后面,由Try語句創(chuàng)建錯誤句柄;由Catch語句獲得錯誤,并執(zhí)行Catch后面的錯誤處理語句,進行錯誤處理。程序中可以有多個Catch語句,如果第一個Catch捕獲不到,將由后面的Catch繼續(xù)捕獲錯誤。無論有無錯誤,程序都將執(zhí)行Finally后面的語句。  下面舉一個簡單的例子說明如何在程序中使用該結(jié)構(gòu)捕獲和處理錯誤。這段程序的作用是當單擊Button1按鈕時,在TextBox中顯示x整除y的結(jié)果。程序中加入了錯誤處理語句,步驟如下: ?。?) 在解決方案chap13中增加一個名為TryCatchTest的項目?! 。?) 在該項目的默認窗體Form1中添加一個Button控件、三個Label控件、三個TextBox控件,按照圖13-14所示設(shè)置控件的Text屬性和位置?! 。?) 雙擊“計算”按鈕,創(chuàng)建該控件的Click事件。在該事件中添加如下代碼:  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  Button1.Click  Dim x As Integer  x = Integer.Parse(TextBox1.Text)  Dim y As Integer  y = Integer.Parse(TextBox2.Text)  創(chuàng)建結(jié)構(gòu)化的錯誤句柄  Try  除出錯  x = x \ y  TextBox3.Text = x.ToString  捕獲錯誤  Catch err As Exception  錯誤處理,將錯誤轉(zhuǎn)化為字符串顯示  MsgBox(err.ToString)  If y = 0 Then y = 1  跳出錯誤處理過程  Finally  Beep()  End Try  End Sub ?。?) 運行該程序,被除數(shù)輸入1,除數(shù)輸入0,單擊“計算”按鈕,彈出如圖13-15所示的對話框。  圖13-15 捕獲異?! 〕绦蛑杏幸粋€漏洞:沒有注意y是否未零。如果y為零,除零必然會產(chǎn)生錯誤,因而程序中將Try語句放在“x=x\y”語句之前,進行捕獲錯誤。當發(fā)生錯誤時,由Catch捕捉,并將錯誤原因用消息框顯示出來,然后跳出錯誤處理程序?! ″e誤對象詳細地指明了錯誤的原因、出錯的位置,當開發(fā)人員看到捕獲的錯誤時,將很快地根據(jù)錯誤提示改正程序中的錯誤?! ∈褂肨ry...Catch...Finally...End Try結(jié)構(gòu)可以方便地捕獲和處理錯誤,大大增加了程序的可靠性和應變能力。如果希望在調(diào)試運行過程中將程序中捕獲的錯誤顯示在即時窗口中,可以使用Visual Basic 2005的Debug對象的Write和WriteLine方法來實現(xiàn)。Debug.WriteLine將一行文字輸出到即時窗口;Debug.Write 方法將文字輸出到即時窗口,并且沒有換行符?! ⑸蟼€例子中的MsgBox(…)語句替換為:  Debug.Write(err.ToString)  這時按F5鍵運行,可以在即時窗口看到捕獲的錯誤以及原因,如圖13-16所示。  圖13-16 即時窗口錯誤信息  使用Debug對象可以方便調(diào)試,但在正式發(fā)布的工程中一定要去掉所有Debug語句和前面的MsgBox消息框,而應該使應用程序根據(jù)可能的錯誤進行處理,使程序可以繼續(xù)運行或者能夠安全退出,使用戶的損失最小?! ?3.6 習  題  13.6.1 填空題  1. 調(diào)試程序時,需要注意權(quán)限的問題?!   ”葓?zhí)行該進程需要更多的特權(quán)。因此,除了要為調(diào)試配置應用程序外,還必須確保有足夠的    附加到進程,以便調(diào)試該進程?! ?. 在逐步運行應用程序的語句時,可用調(diào)試窗口監(jiān)視表達式和變量的值。常用的調(diào)試窗口有    、    、    、    、    ?! ?. 在即時窗口計算表達式或變量很簡單,使用    命令直接把信息顯示到即時窗口中?! ?. 斷點就是程序中定義的一個位置,在那里程序可被暫時停止執(zhí)行,控制權(quán)交給    。程序暫停期間,可以檢查和修改不同的    ,并可以通過    代碼或從當前語句    等操作來往下執(zhí)行?! ?. 如果希望在調(diào)試運行過程中將程序中捕獲的錯誤顯示在即時窗口中,可以使用Visual Basic 2005的Debug對象的    和    方法來實現(xiàn)?! ?3.6.2 選擇題  1. 使用異常時,將可能出錯的語句放在    后面,由    語句創(chuàng)建錯誤句柄;由    語句獲得錯誤,并執(zhí)行    后面的錯誤處理語句,進行錯誤處理。無論有無錯誤,程序都將執(zhí)行    后面的語句。  A. Try  			B. Catch  		C. Finally  		D. On Error  2.  窗口顯示當前堆棧的所有變量及其值?!   〈翱谥兄翟诿看斡蛇\行模式到中斷模式時或堆棧內(nèi)容發(fā)生改變時會自動更新。  A. 局部變量  	B. 即時  		C. 監(jiān)視  		D. 調(diào)用堆?! ?. 在調(diào)試或運行程序時最先看到的是    窗口,它顯示程序的編譯和運行情況。除此以外,    窗口可以顯示程序中正在調(diào)試的語句所產(chǎn)生的信息?! . 局部變量  	B. 即時  		C. 監(jiān)視  		D. 輸出  4.  斷點是    斷點的擴展方式,當程序執(zhí)行到帶標記的指令時,如果指定的條件是真,調(diào)試器就會響應    斷點。  A. 條件  		B. 命中次數(shù)  	C. 輸出   	D. 位置  5. Visual Basic中可以設(shè)置多種類型的斷點,常用的包括    斷點、    斷點、  斷點?! . 條件  		B. 命中次數(shù)  	C. 輸出   	D. 位置  13.6.3 問答題  1. 簡述如何使用即時窗口調(diào)試程序?! ?. 簡述如何使用斷點調(diào)試程序?! ?. 簡述On Error語句和Try…Catch…Finally…End Try塊的區(qū)別?! ?3.6.4 上機操作題  1. 使用Try…Catch…Finally…End Try塊改寫OnErrorTest項目,彈出的異常如圖13-17所示?! D13-17 錯誤對話框  2. 修改DebugTest項目,使用條件斷點,使得當i等于50時中斷程序?! ? 314 ?  Visual Basic 2005程序設(shè)計教程  ? 313 ?  第13章 應用程序的調(diào)試和錯誤處理  書摘插圖  第1章 Visual Basic 2005簡介  Microsoft Visual Basic 2005是從Visual Basic語言演變而來,它是一種類型安全和面向?qū)ο蟮某绦蛟O(shè)計語言。Visual Basic允許開發(fā)人員開發(fā)面向Windows、Web和移動設(shè)備的程序。與所有面向Microsoft.NET Framework的語言一樣,使用Visual Basic編寫的程序都具有安全性和語言互操作性方面的優(yōu)點。  本章重點內(nèi)容:  .NET Framework的基本概念  Visual Studi0 2005開發(fā)環(huán)境  程序開發(fā)的基本流程  1.1.NET Framework 2.0概述  .NET Framework是一種Windows內(nèi)部組件,它支持生成和運行下一代應用程序,同時也支持XML Web Services。.NET Framework具有兩個主要組件:公共語言運行庫和.NETFramework類庫。  公共語言運行庫是.NET Framework的基礎(chǔ)??梢詫⑦\行庫看作一個在執(zhí)行時管理代碼的代理,它提供內(nèi)存管理、線程管理和遠程處理等核心服務(wù),并且還強制實施嚴格的類型安全。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為托管代碼,而不以運行庫為目標的代碼稱為非托管代碼。

編輯推薦

  本書系統(tǒng)地介紹了使用Visual Basic 2005開發(fā)應用程序的方法和技巧,具體內(nèi)容包括Visual Studio 2005開發(fā)環(huán)境、Visual Basic語法、面向?qū)ο蟮母拍睢indows窗體和控件的使用、對話框和文件操作、數(shù)據(jù)庫開發(fā)、網(wǎng)站開發(fā)、使用Active×部件、應用程序的調(diào)試和錯誤處理以及應用程序的安裝和部署等內(nèi)容?! ∽x者對象  本書可作為高等學校計算機相關(guān)專業(yè)的教材,也可作為Visual Basic初、中級用戶的參考書?! ”緯厣 ♂槍Ω咝W生和初、中級用戶,基礎(chǔ)知識與實踐相結(jié)合,詳細介紹Visual Basic 2005程序設(shè)計相關(guān)知識?! ?nèi)容全面,實例豐富,可操作性強,切實提高讀者的實際編程能力。  對編程實例中的重點步驟給予特別說明,仔細剖析技術(shù)要點,加深讀者印象?! ≌虑敖o出重點內(nèi)容,章后附有針對性的練習,使讀者加深對知識點的理解和掌握,并能舉一反三。

圖書封面

評論、評分、閱讀與下載


    Visual Basic 2005程序設(shè)計教程 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7