vb.tet課件第1章.ppt_第1頁
vb.tet課件第1章.ppt_第2頁
vb.tet課件第1章.ppt_第3頁
vb.tet課件第1章.ppt_第4頁
vb.tet課件第1章.ppt_第5頁
已閱讀5頁,還剩138頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第1章 Visual Basic.NET入門,1.1 VS.NET集成開發(fā)環(huán)境 1.2 創(chuàng)建一個(gè)VB.NET應(yīng)用程序 1.3 VB.NET中面向?qū)ο蟮母拍?1.4 用戶界面布局 習(xí)題 實(shí)驗(yàn)一 VB.NET集成開發(fā)環(huán)境,1.1 VS.NET集成開發(fā)環(huán)境Visual Studio.NET(簡稱VS.NET)集成開發(fā)環(huán)境是開發(fā)VS.NET應(yīng)用程序的強(qiáng)大、快速的開發(fā)工具,用于生成ASP Web應(yīng)用程序、XML Web Services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。VS.ENT是一個(gè)家族產(chǎn)品,其中包括Visual Basic.NET、Visual C+ .NET、Visual C# .NET和Visua

2、l J#.NET,它們使用相同的集成開發(fā)環(huán)境(IDE),該環(huán)境允許它們共享工具并有助于創(chuàng)建混合語言解決方案。利用作為其組件之一的VB.NET可快速方便地生成.NET應(yīng)用程序,包括Windows應(yīng)用程序和Web應(yīng)用程序。,VS.NET非常龐大,對計(jì)算機(jī)的環(huán)境要求比較嚴(yán)格,否則將難以充分利用其提供的各種功能。本書以當(dāng)前廣泛使用的Visual Studio.NET 2003為平臺(tái)來介紹。 硬件環(huán)境:推薦配置為P600MHz以上CPU,256MB以上的RAM。系統(tǒng)盤上需要500MB硬盤空間,安裝盤上需要1.5GB硬盤空間,如果要安裝MSDN,則另外需要1.9GB硬盤空間。 軟件環(huán)境:操作系統(tǒng)為Wind

3、ows Server 2003、Windows XP或Windows 2000 (Professional、Server)。如果要開發(fā)Web應(yīng)用程序,則操作系統(tǒng)必須安裝Internet信息服務(wù)(IIS)。,一般VS.NET 2003共有6張光盤,其中前3張是程序安裝盤,后3張是MSDN Library。(1) Windows組件更新。安裝程序在自動(dòng)安裝VS.NET之前,首先檢查Windows組件是否滿足VS.NET運(yùn)行的需要,如果不滿足,則需要先運(yùn)行Windows組件更新程序(第3張光盤),待更新完成后,將重新回到VS.NET的安裝界面。(2) 安裝VS.NET。在安裝界面選擇第2個(gè)選項(xiàng),進(jìn)入

4、VS.NET的安裝環(huán)節(jié)。接受協(xié)議后,輸入正確的序列號(hào),并選擇安裝的項(xiàng)目與安裝位置即可進(jìn)入正常的安裝過程直到結(jié)束。,(3) MSDN安裝。VS.NET安裝結(jié)束后,安裝程序又回到安裝界面,此時(shí)可選擇第3個(gè)選項(xiàng)安裝MSDN。這一步不是必需的,不安裝并不影響VS.NET的運(yùn)行,但所有的聯(lián)機(jī)幫助將不能使用?!景咐?-1】 VS.NET集成開發(fā)環(huán)境?!炯寄苣繕?biāo)】(1) 啟動(dòng)VS.NET開發(fā)環(huán)境。(2) 新建VB.NET項(xiàng)目。(3) 集成開發(fā)環(huán)境(IDE)的認(rèn)識(shí)與基本操作。,【操作要點(diǎn)與步驟】(1) VS.NET的啟動(dòng)。VS.NET安裝成功以后,在“程序”中將產(chǎn)生一個(gè)“Microsoft Visual St

5、udio.NET 2003”的程序項(xiàng),單擊“Microsoft Visual Studio.NET 2003”即可啟動(dòng)VS.NET。(2) 新建或打開一個(gè)項(xiàng)目。在默認(rèn)情況下,啟動(dòng)VS.NET時(shí)將出現(xiàn)“起始頁”對話框。該對話框有三個(gè)選項(xiàng)卡(見圖1-1):“項(xiàng)目”、“聯(lián)機(jī)資源”與“我的配置文件”。在“項(xiàng)目”卡片中列出了最近使用過的項(xiàng)目,可以選擇打開。當(dāng)然也可以單擊“新建項(xiàng)目”新建一個(gè)項(xiàng)目。本案例選擇新建一個(gè)項(xiàng)目,項(xiàng)目存放在“D:VB.net”下,項(xiàng)目名取“vbnet01”。圖1-2為“新建項(xiàng)目”對話框,選擇時(shí)項(xiàng)目類型選“Visual Basic項(xiàng)目”,模板選“Windows應(yīng)用程序”,項(xiàng)目名與位置

6、按以上要求改寫,其他選默認(rèn)值。,圖1-1 啟動(dòng)VS.NET的“起始頁”,圖1-2 “新建項(xiàng)目”對話框,(3) VS.NET環(huán)境初識(shí)。當(dāng)新建項(xiàng)目或打開一個(gè)項(xiàng)目后,即可進(jìn)入VS.NET的集成開發(fā)環(huán)境,如圖1-3所示。VS.NET的集成開發(fā)環(huán)境基本秉承了Visual Studio的一貫風(fēng)格,但在使用方便性、個(gè)性化方面做了許多修改。整個(gè)界面由標(biāo)題欄、菜單欄、工具欄、工具箱、解決方案資源管理器、屬性窗口等構(gòu)成。菜單欄由“文件”、“編輯”、“視圖”、“項(xiàng)目”、“生成”等菜單構(gòu)成,其含義將在以后的使用中逐步介紹。工具欄列出了“標(biāo)準(zhǔn)”、“布局”兩類工具欄。VS.NET提供了20多種不同的工具欄,可以根據(jù)需要顯

7、示或隱藏。當(dāng)然在“視圖”“工具欄”下選擇或右鍵單擊工具欄也可顯示或隱藏指定的工具欄。,圖1-3 VS.NET的集成開發(fā)環(huán)境,工具箱提供了VS.NET設(shè)計(jì)過程中需要的各種類型的控件。由于控件太多,因此VS.NET對這些控件進(jìn)行了分類存放,如“Windows窗體”中存放與窗體設(shè)計(jì)相關(guān)的常用控件,“數(shù)據(jù)”中則存放與數(shù)據(jù)庫相關(guān)的控件等。用戶還可以在工具箱上右擊,在彈出的快捷菜單中選擇“添加選項(xiàng)卡”,輸入新的選項(xiàng)卡名后即可添加用戶自定義的選項(xiàng)卡。解決方案資源管理器與VB原來的“工程資源管理器”類似,它以樹狀結(jié)構(gòu)包含了與某一個(gè)解決方案相關(guān)的所有項(xiàng)目以及各項(xiàng)目下所包括的各個(gè)對象。,屬性窗口(見圖1-4)顯示

8、了設(shè)計(jì)過程中當(dāng)前對象(窗體、控件等)的相關(guān)屬性,用戶可以通過該窗口使對象的相關(guān)屬性變得個(gè)性化。在個(gè)性化屬性時(shí),首先選中要修改的對象(既可在設(shè)計(jì)界面上選擇,也可在屬性窗口的下拉列表中選擇)。每個(gè)對象有許多屬性,屬性默認(rèn)是按分類排序的,也可以改成按字母排序。動(dòng)態(tài)幫助是VS.NET提供的非常智能的幫助手段,它可以根據(jù)用戶當(dāng)前所進(jìn)行的工作內(nèi)容,在幫助列表中顯示出與之相關(guān)的幫助主題。例如,如果用戶當(dāng)前選中的是Button對象,則在動(dòng)態(tài)幫助中出現(xiàn)的將是所有與Button相關(guān)的幫助信息列表,這樣極大地方便了開發(fā)人員。,圖1-4 屬性窗口,(4) VS.NET的窗口操作。VS.NET與以往的開發(fā)環(huán)境相比,采用

9、了更為先進(jìn)的窗口管理策略。在開發(fā)環(huán)境窗口的兩邊分別有“服務(wù)器資源管理器”、“工具箱”和“解決方案資源管理器”、“屬性”等四個(gè)窗口。這幾個(gè)窗口都可以采取“可??俊薄ⅰ半[藏”、“浮動(dòng)”和“自動(dòng)隱藏”四種不同的定位方式。在“窗口”菜單中或右擊窗口標(biāo)題欄在彈出的快捷菜單中可以很方便地對某一窗口進(jìn)行定位。浮動(dòng)窗口也可以通過鼠標(biāo)拖動(dòng)窗口標(biāo)題欄來實(shí)現(xiàn),窗口一旦浮動(dòng)便是一個(gè)真正自由的窗口,并不是MDI的子窗口。要使浮動(dòng)窗口回到原來的位置,可以將該窗口拖動(dòng)到主窗口的邊緣,當(dāng)出現(xiàn)一個(gè)表示其位置的輪廓時(shí),若這個(gè)位置是正確的,則松開鼠標(biāo)即可。,VS.NET的窗口還有一個(gè)先進(jìn)的管理功能,即窗口標(biāo)簽化。VS.NET為每一

10、個(gè)文檔窗口都設(shè)置了一個(gè)選項(xiàng)卡,當(dāng)一個(gè)窗口失去焦點(diǎn)后其對應(yīng)的選項(xiàng)卡會(huì)出現(xiàn)在窗口的邊緣,這樣單擊該選項(xiàng)卡就可以快速切換到該窗口(見圖1-3)。在開發(fā)環(huán)境的主窗口也采用了這種管理方法,尤其當(dāng)打開的文檔較多時(shí),采用這種方法將極大地方便文檔的切換。 在開發(fā)大型應(yīng)用程序時(shí),開發(fā)環(huán)境的主窗口空間是非常寶貴的。為了盡量節(jié)省屏幕空間,提高瀏覽效率,可以將主窗口兩側(cè)的窗口設(shè)置成“自動(dòng)隱藏”。此時(shí)在窗口的邊緣會(huì)出現(xiàn)該窗口的圖標(biāo),一旦鼠標(biāo)靠近該圖標(biāo)標(biāo)簽,相應(yīng)的窗口便會(huì)自動(dòng)彈出(見圖1-3)。,VS.NET集成開發(fā)環(huán)境IDE知識(shí)點(diǎn)1-1-1【相關(guān)知識(shí)】知識(shí)點(diǎn)1-1-1VS.NET集成開發(fā)環(huán)境IDEVS.NET集成開發(fā)環(huán)

11、境是開發(fā)VS.NET應(yīng)用程序的強(qiáng)大、快速的開發(fā)工具,它將程序編輯器、編譯器、調(diào)試工具、設(shè)計(jì)工具等完全集成在一個(gè)使用界面上,極大地方便了應(yīng)用程序的開發(fā)。程序員可以在不離開該環(huán)境的基礎(chǔ)上編輯、編譯、調(diào)試、運(yùn)行一個(gè)應(yīng)用程序。而且,在該環(huán)境中,程序員可以使用一種或多種.NET編程語言(如Visual C+.NET、Visual C#.NET、Visual Basic.NET等)來進(jìn)行程序的開發(fā)。,知識(shí)點(diǎn)1-1-2VS.NET個(gè)性化配置文件VS.NET的開發(fā)環(huán)境非常龐大,程序員一般在開發(fā)應(yīng)用程序時(shí)總是使用某一種開發(fā)語言。盡管各種開發(fā)語言所使用的環(huán)境是類似的,但每種開發(fā)語言的鍵盤方案、窗口布局、幫助篩選器

12、等都有所區(qū)別。因此,為了配合各種語言,VS.NET在啟動(dòng)的“起始頁”中增加了一個(gè)“我的配置文件”選項(xiàng)卡,如圖1-5所示?!拔业呐渲梦募毕驴梢赃x擇VS.NET的配置文件及與此文件相關(guān)的鍵盤方案、窗口布局、幫助篩選器及啟動(dòng)時(shí)顯示的頁面等。在配置文件中可以有多種選擇,如“Visual Studio開發(fā)人員”、“Visual Basic開發(fā)人員”、“Visual C+開發(fā)人員”等。在此可以選擇“Visual Basic開發(fā)人員”,這樣相關(guān)的選項(xiàng)就會(huì)改變成與開發(fā)VB.NET程序相關(guān)的配置。,圖1-5 “我的配置文件”選項(xiàng)卡,知識(shí)點(diǎn)1-1-3VB.NET的特點(diǎn)VB.NET是VS.NET家族中的一個(gè)重要成

13、員,也可以說是VB6.0的后繼版本,它繼承了VB的大部分語法及特征。但VB.NET是對VB語言的又一個(gè)重大變革,它建立在微軟的.NET框架之上,因此相比VB6.0來說,VB.NET作了許多改進(jìn),引入了許多全新的特性。VB.NET的特點(diǎn)主要體現(xiàn)在以下幾個(gè)方面: 變成了一種真正的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,支持繼承、重載、接口、共享成員與構(gòu)造函數(shù)等。 支持.NET框架的CLS特性,支持與C#等其他.NET語言的交互、元數(shù)據(jù)、公共數(shù)據(jù)類型、委托等。, 在.NET框架下,不僅可以開發(fā)Windows應(yīng)用程序,而且可以開發(fā)基于ASP.NET技術(shù)的Web應(yīng)用程序。 支持多線程與結(jié)構(gòu)化異常處理,徹底拋棄了飽受批評的

14、GOTO命令而實(shí)現(xiàn)了錯(cuò)誤處理。 可以通過新的ADO.NET訪問離線的數(shù)據(jù)源。 由于已經(jīng)是完全的面向?qū)ο笳Z言,因此在語法上也有了許多改變,如名稱空間、數(shù)據(jù)類型、運(yùn)算符、過程定義等。,知識(shí)點(diǎn)1-1-4VB.NET開發(fā)類型VB.NET可以創(chuàng)建不同類型的工程項(xiàng)目以適應(yīng)不同的應(yīng)用需要,表1-1列出了VB.NET可以開發(fā)的主要工程類型。,表1-1 VB.NET可以開發(fā)的主要工程類型,知識(shí)點(diǎn)1-1-5解決方案、項(xiàng)目與項(xiàng)為了有效地管理程序員在開發(fā)工作中所需要的項(xiàng),如引用、數(shù)據(jù)連接、文件夾和文件等,VS.NET提供了兩個(gè)容器:解決方案和項(xiàng)目。集成開發(fā)環(huán)境(IDE)中的解決方案資源管理器可以查看和管理這些容器及其

15、關(guān)聯(lián)項(xiàng),如圖1-6所示。一個(gè)解決方案可以包含若干個(gè)相關(guān)的項(xiàng)目與項(xiàng),而一個(gè)項(xiàng)目也包含一些項(xiàng),這些項(xiàng)表示創(chuàng)建應(yīng)用程序所需的引用、數(shù)據(jù)連接、文件夾和文件。項(xiàng)可以作為項(xiàng)目項(xiàng),它構(gòu)成項(xiàng)目,如窗體、源文件和類。項(xiàng)也可作為表示文件的解決方案項(xiàng),適用于整個(gè)解決方案,位于解決方案資源管理器的“解決方案項(xiàng)”文件夾中。,圖1-6 解決方案資源管理器,【知識(shí)擴(kuò)展】1. .NET的起源.NET起源于WindowsDNA(DistributedinterNetApplication architecture,以下簡稱WinDNA)。和.NET一樣,WinDNA也是微軟于1996年在糾正自己的錯(cuò)誤指導(dǎo)思想后,看到Inter

16、net的巨大潛力而全力推出的。WinDNA不是一個(gè)應(yīng)用程序或系統(tǒng),而是一個(gè)編程模型,利用它企業(yè)可以方便地建立流行的n層分布式基于組件的應(yīng)用。WinDNA在技術(shù)上主要以COM為基礎(chǔ)構(gòu)建應(yīng)用程序,其優(yōu)點(diǎn)是基于組件開發(fā)效率高,但由于COM的復(fù)雜性太高,而且COM是基于C+開發(fā)的,因此通用性、可移植性都受到了很大影響。另外還有一些COM的弱點(diǎn),如維護(hù)和性能等方面的問題。,當(dāng)然,需要肯定的是,WinDNA還是一個(gè)很成熟、很實(shí)用的框架,在這個(gè)框架下也開發(fā)出了許多的應(yīng)用程序,而且后來的.NET也有許多是借鑒WinDNA的。但WinDNA有諸多不便之處,特別是網(wǎng)絡(luò)的迅速普及、WebServices的到來、移動(dòng)

17、開發(fā)的興起等,微軟認(rèn)識(shí)到一個(gè)能整合各種開發(fā)的框架模型對于自己在未來成功甚至于生存是何等的重要。Bill Gates先是提出“軟件就是服務(wù)(SoftwareAsService)”的思想,并大力宣傳這一思想,這樣就預(yù)測和奠定了WebServices的未來。而后,微軟將其大部分人力、物力和財(cái)力投入到.NET的開發(fā)中,可以說,.NET就是微軟的未來,也是微軟對未來的全部期望。,2. .NET的真面目.NET是微軟重新樹立自己在軟件業(yè)的信心與地位的關(guān)鍵戰(zhàn)略與概念,在.NET體系結(jié)構(gòu)中,XML是各應(yīng)用之間無縫接合的關(guān)鍵。那么,.NET究竟是什么呢?2000年6月22日,微軟正式發(fā)布了.NET的基本戰(zhàn)略,微

18、軟對.NET的官方描述是:“.NET是Microsoft的用以創(chuàng)建XMLWeb服務(wù)(下一代軟件)的平臺(tái),該平臺(tái)將信息、設(shè)備和人以一種統(tǒng)一的、個(gè)性化的方式聯(lián)系起來”;“借助于.NET的平臺(tái),可以創(chuàng)建和使用基于XML的應(yīng)用程序、進(jìn)程和Web站點(diǎn)以及服務(wù),它們之間可以按設(shè)計(jì)在任何平臺(tái)或智能設(shè)備上共享和組合信息與功能,以向單位和個(gè)人提供定制好的解決方案。”,“.NET是一個(gè)全面的產(chǎn)品家族,它建立在行業(yè)標(biāo)準(zhǔn)和Internet標(biāo)準(zhǔn)之上,提供開發(fā)(工具)、管理(服務(wù)器)、使用(構(gòu)造塊服務(wù)和智能客戶端)以及XMLWeb服務(wù)體驗(yàn)(豐富的用戶體驗(yàn))。.NET將成為您今天正在使用的Microsoft應(yīng)用程序、工具和

19、服務(wù)器的一部分,同時(shí),新產(chǎn)品不斷擴(kuò)展XMLWeb的服務(wù)能力以滿足您的所有業(yè)務(wù)需求?!?NET的最終目的就是讓用戶在任何地方、任何時(shí)間,以及利用任何設(shè)備都能訪問他們所需要的信息、文件與程序。用戶不需要知道這些東西存放在什么地方,甚至連如何獲得等具體細(xì)節(jié)都不必知道。他們只需要發(fā)出需求,然后只管接收結(jié)果即可,所有后臺(tái)的復(fù)雜過程是完全屏蔽起來的。,3. .NET Framework簡介實(shí)際上,.NET是一個(gè)架構(gòu),它包含了在操作系統(tǒng)上進(jìn)行軟件開發(fā)的所有層,而且其開發(fā)Internet應(yīng)用程序就像開發(fā)桌面程序一樣簡單。.NET構(gòu)架的主要組件如圖1-7所示。最底層的Common Language Runtim

20、e(CLR)被稱為“公共語言運(yùn)行時(shí)”,它是.NET Framework的核心。CLR包括一個(gè)數(shù)據(jù)類型的公共系統(tǒng),這些公共類型加上標(biāo)準(zhǔn)接口協(xié)議就可以實(shí)現(xiàn)跨語言的繼承。除了能分配內(nèi)存與管理內(nèi)存以外,CLR也可以進(jìn)行對象跟蹤引用和處理無用存儲(chǔ)單元收集。中間層包括下一代標(biāo)準(zhǔn)系統(tǒng)服務(wù),如ADO.NET和XML,這些服務(wù)都在Framework的控件下,它們能夠在全世界范圍內(nèi)使用,并能夠保持不同語言用法的一致性。,最底層的Common Language Runtime(CLR)被稱為“公共語言運(yùn)行時(shí)”,它是.NET Framework的核心。CLR包括一個(gè)數(shù)據(jù)類型的公共系統(tǒng),這些公共類型加上標(biāo)準(zhǔn)接口協(xié)議就可

21、以實(shí)現(xiàn)跨語言的繼承。除了能分配內(nèi)存與管理內(nèi)存以外,CLR也可以進(jìn)行對象跟蹤引用和處理無用存儲(chǔ)單元收集。中間層包括下一代標(biāo)準(zhǔn)系統(tǒng)服務(wù),如ADO.NET和XML,這些服務(wù)都在Framework的控件下,它們能夠在全世界范圍內(nèi)使用,并能夠保持不同語言用法的一致性。,頂層包括用戶和程序接口,Windows Forms(通常稱為WinForms)是一種制作標(biāo)準(zhǔn)WIN32窗口的更高級(jí)的方法。Web Forms提供了一個(gè)基于Web的用戶接口。最具革命性的應(yīng)是Web Services,它為程序通過Internet(使用SOAP)進(jìn)行交流提供了一種機(jī)制。Web Services提供了一種類似于COM和DCOM,

22、但基于Internet技術(shù)的工具。Web Services和Web Forms主要由.NET的Internet接口工具組成,可以通過.NET Framework中的ASP.NET執(zhí)行。以上所有功能都適用于.NET平臺(tái)上的任何一種語言,當(dāng)然也包括VB.NET。,1.2 創(chuàng)建一個(gè)VB.NET應(yīng)用程序【案例1-2】 歡迎進(jìn)入奇妙的VB.NET世界!這是用VB.NET開發(fā)的一個(gè)非常簡單的界面,程序運(yùn)行后顯示如圖1-8所示的窗口,單擊“確定”按鈕后,在文本框中顯示“歡迎進(jìn)入奇妙的VB.NET世界!”?!炯寄苣繕?biāo)】(1) 項(xiàng)目的創(chuàng)建。(2) 界面設(shè)計(jì)。(3) 控件屬性設(shè)置。(4) 代碼的編寫。(5) 項(xiàng)目

23、的保存與運(yùn)行。,圖1-8 “歡迎”界面,(a) (b),【操作要點(diǎn)與步驟】(1) 啟動(dòng)VS.NET 2003。(2) 在“起始頁”的“項(xiàng)目”選項(xiàng)卡上選擇“新建項(xiàng)目”,在如圖1-2所示的“新建項(xiàng)目”對話框中作如下操作。 在“項(xiàng)目類型”中選擇“Visual Basic項(xiàng)目”,在“模板”中選擇“Windows應(yīng)用程序”。 在“名稱”中輸入“VBnet01”,“位置”中輸入“D:VB.net”或單擊“瀏覽”進(jìn)行選擇。 其他選擇默認(rèn)值,單擊“確定”按鈕,項(xiàng)目創(chuàng)建成功。,(3) 界面設(shè)計(jì)與調(diào)整。項(xiàng)目創(chuàng)建成功后,將進(jìn)入如圖1-3所示的開發(fā)環(huán)境界面,此時(shí)就可在名稱為Form1的“窗體設(shè)計(jì)界面”上添加控件,進(jìn)行

24、窗體界面的設(shè)計(jì)。在添加控件以前,首先將窗體調(diào)整為合適的大小。在工具箱的“Windows窗體”選項(xiàng)卡中單擊文本框(TextBox)控件,將鼠標(biāo)移到窗體的適當(dāng)位置上再單擊一次,界面上就會(huì)出現(xiàn)文本框。文本框中會(huì)出現(xiàn)默認(rèn)的“TextBox1”文字。用同樣的方法在窗體上添加一個(gè)命令按鈕(Button),按鈕上默認(rèn)的標(biāo)題為“Button1”。,添加控件還有多種方法: 選擇控件并拖動(dòng)到窗體的適當(dāng)位置后松開鼠標(biāo); 雙擊控件; 對已經(jīng)存在的同類型控件進(jìn)行復(fù)制、粘貼。大部分控件上都有標(biāo)題,其默認(rèn)的內(nèi)容為控件名稱加序號(hào)(第一個(gè)為“1”,第二個(gè)為“2”)。添加好控件后,還要對其進(jìn)行適當(dāng)?shù)恼{(diào)整,如位置、大小等。,與其他

25、可視化編程語言一樣,在VB.NET中無論是要調(diào)整對象的大小、位置,還是要對對象進(jìn)行編程,都要先選中對象。當(dāng)某一個(gè)對象被選中后,在該對象的周圍會(huì)出現(xiàn)8個(gè)尺寸控點(diǎn)(與OFFICE類似)。此時(shí)就可以使用通用的方法來改變對象的位置以及大小了。,單個(gè)選中對象的控點(diǎn)分為透明與白色兩種,凡是透明的控點(diǎn)表示在該方向上是不能改變其對象大小的;而白色的則正好相反。例如,文本框只有水平方向上的兩個(gè)控點(diǎn)是白色的,這意味著該文本框只能調(diào)整其寬度,而不能調(diào)整其高度。(4) 屬性設(shè)置。在窗體設(shè)計(jì)界面上的任何對象都有許多屬性(包括窗體本身),對其中的有些屬性(如顯示的標(biāo)題、文字的大小等)要進(jìn)行設(shè)置。 將窗體的標(biāo)題欄文字改為“

26、歡迎”:在窗體的空白處單擊(或在屬性窗口上方的下拉列表中選擇Form1),在屬性窗口的“Text”屬性中將文字改為“歡迎”。, 將文本框中的文字改為空并修改顯示的文本字體:選中文本框后在屬性窗口的“Text”屬性中將文字刪除。選中“Font”屬性, 單擊其右邊的“”按鈕, 打開相應(yīng)的字體對話框,將其改為宋體、四號(hào)、粗體。并適當(dāng)加大文本框的寬度。 將命令按鈕的標(biāo)題改為“確定”:選中命令按鈕后在屬性窗口的“Text”屬性中將文字改為“確定”。 將窗體的文件名改為“vb01_01”:在解決方案資源管理器中單擊“Form1.vb”文件,在屬性窗口的文件名中修改即可。屬性設(shè)置后,窗體界面如圖1-9所示。

27、,圖1-9 窗體界面,(5) 代碼編寫。經(jīng)過以上設(shè)計(jì),界面基本完成,現(xiàn)在就可以試運(yùn)行以觀察其效果了。單擊工具欄上的按鈕或按快捷鍵F5即可運(yùn)行程序。但運(yùn)行后當(dāng)單擊命令按鈕時(shí),程序根本沒有任何反應(yīng),這是因?yàn)檫€沒有為按鈕編寫事件過程代碼。本案例的代碼非常簡單。雙擊“確定”按鈕,進(jìn)入Form1的代碼窗口,在光標(biāo)閃爍處輸入以下代碼:TextBox1.Text = 歡迎進(jìn)入奇妙的VB.NET世界!,(6) 項(xiàng)目的保存與運(yùn)行。代碼輸入完成后,整個(gè)項(xiàng)目的設(shè)計(jì)基本結(jié)束,此時(shí)可以先將項(xiàng)目保存,然后再正式運(yùn)行該項(xiàng)目。當(dāng)然在運(yùn)行項(xiàng)目時(shí),如果沒有保存,則會(huì)自動(dòng)先保存。項(xiàng)目運(yùn)行后,將首先出現(xiàn)圖1-8(a),單擊“確定”按

28、鈕后,顯示見圖1-8(b)。在案例1-2中,雙擊命令按鈕后打開的代碼編輯器如圖1-10所示。,圖1-10 代碼編輯器,【相關(guān)知識(shí)】知識(shí)點(diǎn)1-2-1項(xiàng)目及其創(chuàng)建在知識(shí)點(diǎn)1-1-5中介紹了解決方案、項(xiàng)目與項(xiàng)的概念及關(guān)系。VB.NET在創(chuàng)建一個(gè)新項(xiàng)目時(shí)會(huì)根據(jù)以下兩種不同的情況進(jìn)行不同的處理。(1) VS.NET中沒有打開任何解決方案時(shí),“新建項(xiàng)目”對話框如圖1-2所示。默認(rèn)情況下,在名稱處輸入項(xiàng)目名時(shí),會(huì)在“新解決方案的名稱”處出現(xiàn)同名的解決方案,這表示在創(chuàng)建項(xiàng)目時(shí)首先要在“位置”文件夾下創(chuàng)建一個(gè)解決方案文件夾。如果選中“創(chuàng)建解決方案的目錄”,則可以修改解決方案的名稱,同時(shí)在解決方案文件夾下創(chuàng)建一個(gè)

29、名為“解決方案名稱.SLN”的文件。如沒有選中,則不會(huì)產(chǎn)生名為“解決方案名稱.SLN”的文件。,(2) VS.NET已經(jīng)打開了一個(gè)解決方案時(shí),新建項(xiàng)目“解決方案名稱.SLN”對話框如圖1-11所示。顯然,在該對話框中增加了兩個(gè)單選鈕:“添入解決方案”與“關(guān)閉解決方案”。前者表示將新項(xiàng)目加入到已經(jīng)打開的解決方案中作為另一個(gè)項(xiàng)目;后者表示先關(guān)閉已經(jīng)打開的解決方案,然后新建解決方案與項(xiàng)目。,圖1-11 “新建項(xiàng)目”對話框之二,項(xiàng)目創(chuàng)建以后,VB.NET將在指定的文件夾下自動(dòng)生成相關(guān)的目錄結(jié)構(gòu),如圖1-12所示。最上層為解決方案文件夾,此文件夾下為項(xiàng)目文件夾。在項(xiàng)目文件夾下有兩個(gè)文件夾:編譯文件夾bi

30、n(存放已經(jīng)編譯的可執(zhí)行文件)和對象文件夾obj(主要存放調(diào)試相關(guān)的文件)。所有的VB.NET源文件均存放在項(xiàng)目文件夾下。當(dāng)一個(gè)解決方案下有多個(gè)項(xiàng)目時(shí),將產(chǎn)生多個(gè)對應(yīng)的項(xiàng)目文件夾,其結(jié)構(gòu)都是類似的。,圖1-12 項(xiàng)目文件夾結(jié)構(gòu),知識(shí)點(diǎn)1-2-2屬性設(shè)置屬性定義了窗體、文檔或控件的狀態(tài)、行為和外觀。窗體及其所屬的控件都有默認(rèn)的屬性,默認(rèn)的屬性不一定符合程序的需要,因此常常要對部分屬性重新進(jìn)行設(shè)置。屬性設(shè)置是應(yīng)用程序開發(fā)中的重要一步。在VB.NET中屬性的設(shè)置方法采用兩種方法:設(shè)計(jì)時(shí)設(shè)置(靜態(tài)設(shè)置)與運(yùn)行時(shí)設(shè)置(動(dòng)態(tài)設(shè)置)。設(shè)計(jì)時(shí)設(shè)置:在設(shè)計(jì)窗體布局時(shí)進(jìn)行,對象的屬性一旦設(shè)置,在程序的運(yùn)行期間便不

31、再改變。靜態(tài)設(shè)置通過屬性窗口進(jìn)行。在“屬性窗口”中設(shè)置屬性很簡單,只要在屬性列表中選定屬性名稱,然后在屬性窗口的右列中輸入或選擇新的屬性值即可。,有些屬性有預(yù)定義的設(shè)置值清單。單擊設(shè)置框右側(cè)的下拉箭頭,可以顯示出這個(gè)清單,或者雙擊列表項(xiàng),可以循環(huán)顯示這個(gè)清單。有些屬性的右邊會(huì)出現(xiàn)“”按鈕,單擊該按鈕將出現(xiàn)一個(gè)相關(guān)的對話框供用戶進(jìn)行選擇。屬性的值一旦改變,其在屬性窗口的值會(huì)變成粗體。如果在屏幕上沒有屬性窗口,則可以通過選擇“視圖”“屬性窗口”命令或在工具欄中單擊“屬性窗口”按鈕來顯示。,運(yùn)行時(shí)設(shè)置:指在程序運(yùn)行期間通過代碼對對象的屬性進(jìn)行設(shè)置,這種設(shè)置是動(dòng)態(tài)的,可以根據(jù)程序運(yùn)行的情況進(jìn)行不同的設(shè)

32、置。動(dòng)態(tài)設(shè)置使用了VB.NET最簡單的賦值語句來實(shí)現(xiàn),如案例1-2中設(shè)置文本框顯示內(nèi)容的語句如下:TextBox1.Text = “歡迎進(jìn)入奇妙的VB.NET世界!”所以,動(dòng)態(tài)設(shè)置對象屬性的一般格式為對象名.屬性名=表達(dá)式如果要對多個(gè)控件的同一種屬性進(jìn)行相同的設(shè)置,則可以同時(shí)選中待設(shè)置的控件,在屬性窗口中進(jìn)行一次性設(shè)置。,知識(shí)點(diǎn)1-2-3代碼與代碼編輯器VB.NET的代碼編輯器(也稱文本編輯器)與VB6.0的代碼編輯器類似,但它具有許多新的特點(diǎn)??梢杂孟铝蟹椒ù蜷_代碼編輯器: 在“解決方案資源管理器”中選擇一個(gè)窗體或模塊,然后選擇“查看代碼”按鈕。 雙擊窗體或窗體中的控件。 在窗體中,右擊一個(gè)

33、控件并選擇“查看代碼”,也可在“視圖”菜單中選擇“代碼”命令。在案例1-2中,雙擊命令按鈕后打開的代碼編輯器如圖1-10所示。,VB.NET的代碼結(jié)構(gòu)與VB的代碼結(jié)構(gòu)有較大的差別。整個(gè)窗體的所有過程代碼均包含在一個(gè)名為窗體名的類中,而且其中有一部分代碼是由窗體設(shè)計(jì)器自動(dòng)生成的,由于一般并不需要用戶修改,因此這部分代碼呈折疊狀態(tài)。另外,VB.NET的事件過程結(jié)構(gòu)與VB的事件過程結(jié)構(gòu)也有區(qū)別,如命令按鈕的單擊事件過程在VB中是沒有參數(shù)的,而在VB.NET中卻帶了兩個(gè)參數(shù)。VB.NET代碼編輯器的默認(rèn)設(shè)置可以滿足正常的編程需要,但根據(jù)實(shí)際情況也可以更改這些設(shè)置。更改方法是打開“工具”“選項(xiàng)”“文本編

34、輯器”“常規(guī)”或“Basic”這兩張選項(xiàng)卡即可修改諸如顯示、自動(dòng)功能、制表符大小以及VB專用設(shè)置等。,知識(shí)點(diǎn)1-2-4獲取幫助在應(yīng)用程序的開發(fā)過程中總會(huì)遇到方方面面的問題(如對某些屬性的設(shè)置不熟,忘記了某些命令的語法等),解決這些問題除了查閱相關(guān)的資料以外,參考VS.NET所提供的聯(lián)機(jī)幫助是最好的選擇。VS.NET中的“幫助”與開發(fā)環(huán)境(IDE)緊密地集成在一起(前提是安裝了VS.NET的MSDN Library),旨在根據(jù)開發(fā)工作環(huán)境為用戶提供所需的信息。其幫助功能非常強(qiáng)大,基本上在任何情況下都可以提供所需要的幫助。當(dāng)設(shè)計(jì)對象并為其編寫功能代碼時(shí),編輯器可以提供語句結(jié)束,該語句結(jié)束提供了所需

35、的語言關(guān)鍵字、方法和屬性的語法信息。如果想更廣泛地檢查庫或?qū)ο蟮墓δ?,則可以使用對象瀏覽器。如果需要更多有關(guān)特定語言元素的用法和功能的信息,則可以使用F1幫助顯示語言參考主題。,當(dāng)在集成開發(fā)環(huán)境(IDE)中工作時(shí),“動(dòng)態(tài)幫助”窗口可以顯示與當(dāng)前工作相關(guān)的主題的鏈接選擇。例如,當(dāng)開發(fā)者位于窗體設(shè)計(jì)器時(shí),動(dòng)態(tài)幫助窗口如圖1-13所示。這些主題可包含完成任務(wù)的過程, 如介紹新技術(shù)的演練,完成部分開發(fā)工作的編程實(shí)踐等。動(dòng)態(tài)幫助的其他類別包括示例和相關(guān)的培訓(xùn)主題,當(dāng)然,F(xiàn)1幫助根據(jù)選定的用戶界面元素或看到的錯(cuò)誤信息來顯示參考主題,可以通過在集成開發(fā)環(huán)境中選擇不同的點(diǎn)來指定“動(dòng)態(tài)幫助”窗口的上下文。除了在

36、“動(dòng)態(tài)幫助”窗口中取得幫助以外,在該窗口中還提供了三個(gè)按鈕:“目錄”、“索引”與“搜索”,用戶通過這三個(gè)按鈕可以獲取更多、更全面的幫助。,圖1-13 動(dòng)態(tài)幫助窗口,1通過目錄定位主題單擊“目錄”按鈕后,將會(huì)出現(xiàn)名為“目錄”的選項(xiàng)卡式窗口,如圖1-14所示。(1) 展開或收縮節(jié)點(diǎn)。在目錄中單擊節(jié)點(diǎn)前的加號(hào)(+)可展開此節(jié)點(diǎn),然后雙擊要查看的項(xiàng)目。單擊節(jié)點(diǎn)前的減號(hào)()可收縮此節(jié)點(diǎn)??墒褂蒙舷路较蜴I在垂直方向移動(dòng)來定位節(jié)點(diǎn),使用左右方向鍵可展開和收縮節(jié)點(diǎn);使用工具欄上的“前進(jìn)”和“后退”按鈕可顯示過去查看過的信息。(2) 單擊目錄中選中的某一主題,將在主工作區(qū)打開一個(gè)與該主題相關(guān)的窗口。該窗口顯示幫

37、助的內(nèi)容。,圖1-14 目錄窗口,2通過索引查找信息使用索引就像使用一本書的目錄一樣,通過索引可快速找到特定的信息。MSDN的“索引”選項(xiàng)卡包含了一個(gè)關(guān)鍵字列表,這些關(guān)鍵字與眾多的MSDN Library主題相關(guān)聯(lián)。使用索引定位主題的方法如下:單擊“索引”按鈕,將出現(xiàn)索引的選項(xiàng)卡式窗口(見圖1-15),然后鍵入或選擇一個(gè)與所需查找信息有關(guān)的關(guān)鍵字;選中關(guān)鍵字后,雙擊該主題,將在主窗口顯示相關(guān)的幫助內(nèi)容。,圖1-15 索引窗口,3從Internet上獲得幫助在MSDN Library中有眾多的內(nèi)部鏈接以及與外部網(wǎng)站的鏈接。MSDN查閱器使用了Internet Explorer瀏覽器的引擎,其默認(rèn)

38、的設(shè)置為脫機(jī)模式,但當(dāng)激活了與外部網(wǎng)站的鏈接后就會(huì)切換到聯(lián)機(jī)模式,與Internet上相關(guān)的網(wǎng)站建立鏈接。除此之外,Internet上還有眾多用于學(xué)習(xí)和交流的VB站點(diǎn),包括微軟官方站點(diǎn)。通過這些站點(diǎn)可以與世界各地的VB愛好者互相學(xué)習(xí)和交流,獲取軟件開發(fā)方面的資料。充分利用好Internet,讀者將受益匪淺。,1.3 VB.NET中面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)是軟件設(shè)計(jì)和實(shí)現(xiàn)的重要方法。這種方法通過增強(qiáng)軟件的可擴(kuò)充性和可重用性來改善并提高程序設(shè)計(jì)人員的生產(chǎn)能力,以便有效地控制軟件維護(hù)的復(fù)雜性和開銷。VB.NET是一種完全面向?qū)ο蟮木幊陶Z言,它支持面向?qū)ο缶幊痰?個(gè)基本原則:抽象、封裝、繼承和

39、多態(tài),而且在事件處理機(jī)制、控件的布局等方面也具有許多新的特點(diǎn)。另外,類和對象是利用VB.NET編程的核心概念,對象是類的實(shí)例,類是對象的定義。在VB.NET中,幾乎所有的操作都與對象有關(guān)。創(chuàng)建應(yīng)用程序的過程,其實(shí)質(zhì)就是不斷地處理對象的過程,對象的作用使得重用代碼成為可能?!景咐?-3】 VB.NET窗體繼承演示,如圖1-16所示。,圖1-16 窗體的繼承,(a) (b),【技能目標(biāo)】(1) 制作簡單的VB.NET界面。(2) 理解窗體的繼承。(3) 理解VB.NET中面向?qū)ο蟮幕靖拍??!静僮饕c(diǎn)與步驟】(1) 啟動(dòng)VS.NET,新建一個(gè)項(xiàng)目,名稱為“vbnet02”。(2) 在窗體上加入兩個(gè)

40、按鈕:“確定”和“退出”。(3) 設(shè)置“確定”按鈕的Modifiers屬性為“Public”,“退出”按鈕的Modifiers屬性為“Friend”。,(4) 在“退出”按鈕的Click事件編寫輸入“End”代碼。(5) 在“解決方案資源管理器”中選擇Form1.vb對象,在下方屬性窗口的“雜項(xiàng)”中修改“文件名”屬性為“vbnet01_03.vb”。(6) 打開“生成”“生成vbnet02”。(7) 打開“項(xiàng)目”菜單,選擇添加“繼承的窗體”,出現(xiàn)如圖1-17所示的對話框。(8) 選擇“打開”按鈕,出現(xiàn)“繼承選擇器”對話框,選擇其中的Form1,確定返回。此時(shí)主窗口出現(xiàn)一個(gè)新的窗體,如圖1-18

41、所示。該窗體已經(jīng)具備了窗體Form1的所有控件,但控件左上角都帶有圖標(biāo)。,圖1-17 添加“繼承的窗體”對話框,圖1-18 繼承的窗體,(9) 在所生成的繼承窗體上再添加如圖1-16(b)所示的標(biāo)簽與文本框,為其進(jìn)行相應(yīng)的屬性設(shè)置。(10) 在菜單“項(xiàng)目”“vbnet02屬性”中將“啟動(dòng)對象”設(shè)置為Form2。此時(shí)運(yùn)行程序后即會(huì)出現(xiàn)如圖1-16(b)所示的界面。一般而言,繼承窗體上所有控件的大小與位置都是固定的,不能改變,其對應(yīng)的事件過程代碼也不能改寫。但如果在設(shè)計(jì)被繼承窗體時(shí)將控件的Modifiers屬性設(shè)置成Public,則該控件就可以重新進(jìn)行屬性及代碼的設(shè)置。,【相關(guān)知識(shí)】知識(shí)點(diǎn)1-3-

42、1類與對象類是定義了對象特征以及對象外觀和行為的模板。就像描述建筑一座大樓的藍(lán)圖一樣,類以同樣的方式描述組成對象的屬性、字段、方法和事件。就像一副藍(lán)圖可以用于建成多座建筑一樣,一個(gè)類也可以用于根據(jù)需要?jiǎng)?chuàng)建多個(gè)對象。就像藍(lán)圖定義使用建筑的人可以訪問建筑的哪些部分一樣,類也可以通過封裝來控制用戶對對象項(xiàng)的訪問。對象是類的一個(gè)實(shí)例,包括數(shù)據(jù)及其代碼。例如,一個(gè)對話框,一個(gè)命令按鈕,一個(gè)文本框均可視為一個(gè)對象。通常意義上,類是一類事物的一個(gè)抽象的概念,而對象則是具體指某個(gè)事物,類描述了對象的結(jié)構(gòu)。,在可視化語言編程環(huán)境中,將用戶界面上出現(xiàn)的元素,例如命令按鈕、文本框和列表框等,都看成對象。對象是VB.

43、NET程序設(shè)計(jì)的核心,VB.NET已經(jīng)設(shè)計(jì)好了各種對象,程序員可以直接使用這些對象。在VS.NET開發(fā)環(huán)境中,工具箱中所顯示的各種控件可以認(rèn)為是類,通過這些控件在窗體上繪制出的各種界面元素則稱為對象。類及對象具有封裝、繼承與多態(tài)性三大基本特征。,1封裝封裝是指將對象的數(shù)據(jù)與操作組合成有機(jī)的整體。在面向?qū)ο蟪绦蛑校梢酝ㄟ^封裝屏蔽對象內(nèi)部的復(fù)雜性,只提供必需的、與外界相交互的操作。舉例來說,一部電話只要向用戶提供撥打電話與接聽電話兩個(gè)基本功能,用戶只要知道如何撥打電話和如何接聽電話就行了,并不需要了解電話機(jī)內(nèi)部實(shí)現(xiàn)這兩個(gè)功能的具體技術(shù)細(xì)節(jié)。實(shí)際上,電話機(jī)制造商已經(jīng)將與此相關(guān)的復(fù)雜技術(shù)細(xì)節(jié)“封裝”

44、在電話機(jī)內(nèi)部,用戶根本不需要知道這些實(shí)現(xiàn)機(jī)理。面向?qū)ο蟪绦蛟O(shè)計(jì)中用類來封裝對象內(nèi)部的復(fù)雜性,而只將與外界相互操作的功能展現(xiàn)在用戶面前。例如案例1-3中,用戶對于這樣的界面是非常熟悉的,也知道如何操作。但事實(shí)上,無論是按鈕還是文本框,其對象內(nèi)部都封裝了諸如大小、位置、顏色、字體及對操作的響應(yīng)代碼等,所有這些用戶是無需關(guān)心的。,2繼承繼承也是面向?qū)ο笾幸粋€(gè)極其重要的概念,繼承就是由一個(gè)基礎(chǔ)類(Base Class)衍生出一個(gè)新的類,新類中除了繼承基礎(chǔ)類中的所有功能外,還可以再加上一些新的方法,或者將基礎(chǔ)類中某項(xiàng)需要修改的功能覆蓋掉。在現(xiàn)實(shí)生活中,繼承也是普遍存在的。圖1-19所示的就是交通工具的繼

45、承關(guān)系。,圖1-19 交通工具的繼承關(guān)系,案例1-3也正是演示了這種繼承關(guān)系。在設(shè)計(jì)第一個(gè)窗體vbnet01_03.vb時(shí),打開其代碼窗口,代碼第2句為:Inherits System.Windows.Forms.Form,意思是該窗體繼承了系統(tǒng)的基礎(chǔ)窗體類Form。在設(shè)計(jì)第2個(gè)窗體時(shí),由于采用了繼承窗體的方法,因此窗體生成代碼的第2句變成了Inherits vbnet02.Form1。說明該窗體已經(jīng)不再是繼承系統(tǒng)的基礎(chǔ)類窗體,而是繼承了第1個(gè)窗體。,3多態(tài)性屬性、事件與方法知識(shí)點(diǎn)1-3-2所謂多態(tài)性,是指相同的行為在不同的對象中會(huì)出現(xiàn)不同的結(jié)果。例如有兩個(gè)Windows窗體:一個(gè)是用來顯示學(xué)

46、生基本信息的窗體A;另一個(gè)是用來顯示教師基本信息的窗體B。這兩個(gè)窗體都有相同的顯示窗體的方法Show,無論要顯示哪個(gè)窗體都是調(diào)用Show方法。使用窗體A的Show方法顯示的是學(xué)生基本信息;而使用窗體B的Show方法則顯示教師的基本信息。這就是面向?qū)ο笾械亩鄳B(tài)性概念。,知識(shí)點(diǎn)1-3-2屬性、事件與方法1屬性為了便于操作控制對象,在建立對象時(shí),賦予了它們許多屬性。每個(gè)對象都有屬性,例如,一部電話有顏色和大??;當(dāng)把一部電話放在辦公室中,它又有了一定的位置;而它的聽筒也有拿起和掛上兩種狀態(tài)。這些屬性體現(xiàn)了該對象的外觀和對事件的響應(yīng)能力等特性,即屬性是對象的性質(zhì)或描述對象的數(shù)據(jù)。改變對象的屬性,便可控制

47、其在程序中的作用。屬性的類型因?qū)ο蟮牟煌煌1热?,樹木有種類、形狀、顏色以及高度等可見屬性,還有一些不可見的屬性,如壽命、材質(zhì)等,所有的樹木都可以具有這些屬性,但不同的樹木個(gè)體其屬性的值卻各不相同。對象的屬性可以進(jìn)行設(shè)置。有些屬性可以在設(shè)計(jì)時(shí)通過屬性窗口來定義,如影響一個(gè)控件在運(yùn)行時(shí)是否可見的Visible屬性、對象的名稱、標(biāo)題等;有些屬性可在運(yùn)行時(shí)通過編寫代碼來設(shè)置,如文本內(nèi)容、菜單條目等。,2方法屬性是描述對象的數(shù)據(jù)。方法是讓對象實(shí)施一個(gè)動(dòng)作或執(zhí)行一項(xiàng)任務(wù)的途徑,即方法告訴對象應(yīng)處理的事情。每一個(gè)對象都包含對數(shù)據(jù)進(jìn)行操作的代碼段,這段代碼就是對象能夠執(zhí)行的一個(gè)操作,即方法。例如,列表框

48、有Add (增加項(xiàng)目)、Remove(刪除項(xiàng)目)和Clear(清除所有項(xiàng)目)等方法來維護(hù)其列表中的內(nèi)容。,3事件及事件過程事件是一種預(yù)先定義好的特定動(dòng)作,由用戶或系統(tǒng)激活。例如,當(dāng)用戶在Windows桌面上用鼠標(biāo)單擊“開始”按鈕時(shí),單擊此按鈕的動(dòng)作就是一個(gè)事件。每當(dāng)這個(gè)事件發(fā)生時(shí),程序?qū)棾觥伴_始”菜單,讓用戶選擇,再根據(jù)選擇引發(fā)下一個(gè)事件。每個(gè)對象都規(guī)定了相應(yīng)的可響應(yīng)的事件,如鼠標(biāo)的單擊、鍵盤上的按鍵、對象內(nèi)容的更改等。事件是對象在應(yīng)用程序運(yùn)行時(shí)所產(chǎn)生的事情,即生成的對象所要完成的任務(wù),如用戶單擊一個(gè)命令按鈕就是一個(gè)事件。每發(fā)生一次事件,將引發(fā)一條消息發(fā)送至操作系統(tǒng)。操作系統(tǒng)處理該消息并廣播

49、給其他窗口。然后,每一個(gè)窗口才能根據(jù)自身處理該條消息的指令,進(jìn)而采取適當(dāng)?shù)牟僮?例如,當(dāng)窗口解除了其他窗口的覆蓋時(shí),重顯自身窗口)。,在傳統(tǒng)的或“過程化”的應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。在事件驅(qū)動(dòng)的應(yīng)用程序中,事件可以由用戶操作觸發(fā),也可以由來自操作系統(tǒng)或其他應(yīng)用程序的消息觸發(fā),甚至可以由應(yīng)用程序本身的消息觸發(fā)。代碼也不是按照預(yù)定的路徑執(zhí)行的,而是在響應(yīng)不同事件時(shí)執(zhí)行不同的代碼片段。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時(shí)執(zhí)行代碼的路徑都是不同的。代碼在執(zhí)行中也可以觸發(fā)事件。例如,在程序中改變文本框中的文本將引發(fā)文本框的TextChang

50、e事件。如果TextChange事件中包含有代碼,則將導(dǎo)致該代碼的執(zhí)行。,總之,可以把事件看做是一個(gè)響應(yīng)對象行為的動(dòng)作。事件發(fā)生時(shí)可以編寫代碼進(jìn)行處理。每個(gè)事件都與一段代碼相關(guān),與事件相關(guān)的代碼稱為“事件過程”。【知識(shí)擴(kuò)展】1命名空間命名空間是Microsoft.NET中非常重要的一個(gè)概念。命名空間解決了被稱為“命名空間污染”或“名稱沖突”的問題,由于VB.NET是完全面向?qū)ο笳Z言,因此其開發(fā)的應(yīng)用程序的所有代碼均封裝在各個(gè)類之中。當(dāng)要調(diào)用某個(gè)類中的某個(gè)方法時(shí),必須使用“對象實(shí)例名稱.方法名”。如果一個(gè)系統(tǒng)涉及的對象很多,那么在實(shí)際應(yīng)用中常常會(huì)遇到類名重復(fù)的問題。為了避免這個(gè)問題,VB.NET

51、使用命名空間(NameSpace)來對這些類進(jìn)行管理。事實(shí)上,一個(gè)應(yīng)用程序的所有程序代碼都被包含在某些命名空間中。,VB.NET有系統(tǒng)命名空間,所有定義的控件都包含在System.Windows.Forms命名空間中。當(dāng)然程序員也可以自定義命名空間。在默認(rèn)情況下,用VB.NET創(chuàng)建的可執(zhí)行文件包含與項(xiàng)目同名的命名空間。例如,如果在名為VBnet02的項(xiàng)目內(nèi)定義一個(gè)對象,則可執(zhí)行文件(VBnet02.exe)包含名為VBnet02的命名空間。,2VB.NET的代碼框架與事件處理機(jī)制當(dāng)在VB.NET中創(chuàng)建窗體時(shí)會(huì)自動(dòng)生成一些必要的代碼,這些代碼主要用于聲明窗體,以及對窗體進(jìn)行初始化。同時(shí)隨著窗體上

52、對象的增多,相應(yīng)的代碼也會(huì)增加。圖1-20是對應(yīng)圖1-16所示窗體的代碼窗口。從圖1-20中可以看出,VB.NET的代碼是以類的形式組織的,第1行即聲明了一個(gè)名為Form1的類。這說明在VB.NET中整個(gè)窗體已經(jīng)成為了類。,圖1-20 VB.NET的代碼窗口,第2行說明該窗體類繼承了System.Windows.Forms.Form系統(tǒng)基礎(chǔ)類。接著是折疊的代碼框“Windows窗體設(shè)計(jì)器生成的代碼”。這部分代碼在正常情況下是折疊的,不需要用戶去管理,由窗體設(shè)計(jì)器自動(dòng)生成,它主要通過代碼在窗體上創(chuàng)建各種控件的實(shí)例,并設(shè)置其位置、初始值等。單擊“+”號(hào)可以展開,但一般情況下不要對其進(jìn)行修改,否則會(huì)

53、造成意料不到的錯(cuò)誤。這部分代碼展開后如下所示。,從上面的代碼可以看出,不用VB.NET開發(fā)環(huán)境也可以創(chuàng)建一個(gè)VB.NET窗體。創(chuàng)建窗體的全部工作都可以通過代碼來實(shí)現(xiàn),但使用開發(fā)環(huán)境將會(huì)使開發(fā)工作變得更容易。在窗體設(shè)計(jì)器生成的代碼之后即為開發(fā)人員編寫的事件處理過程與一般過程。圖1-20中顯示了Button3的Click事件代碼:Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button3.Click EndEnd Sub,從以上事件處理代碼可以看出,V

54、B.NET中的事件處理過程與VB6.0是非常相似的,但還是存在以下不同:(1) 在VB6.0中,命令按鈕稱為Command1,而在VB.NET中則變成了Button1。(2) 事件過程參數(shù)有所區(qū)別。在VB6.0中,命令按鈕的Click事件過程是不帶參數(shù)的,但VB.NET中卻有兩個(gè)參數(shù):sender與e。sender是System.Object類型的參數(shù),指定了激發(fā)該事件的控件;e是System.EventArgs類型的參數(shù),指定了與所激發(fā)事件相關(guān)的一些數(shù)據(jù)。,在VB.NET中,所有的事件處理程序都帶有這兩個(gè)參數(shù)。(3) 有時(shí)候,應(yīng)用程序所定義的控件很多,而對于這些控件所激發(fā)的事件又有著同樣或者

55、類似的處理過程。此時(shí)如果能通過一個(gè)事件處理方法來處理所有要求相同的控件事件,則會(huì)大大提高開發(fā)效率。在VB6.0中只能通過使用控件數(shù)組來實(shí)現(xiàn);而在VB.NET中只要在所指定的事件處理方法聲明后面添上Handles關(guān)鍵字,再將希望由該方法處理的控件事件一一列舉出來(以逗號(hào)隔開)即可,程序員可以通過sender參數(shù)判斷是哪個(gè)控件激發(fā)了事件。,1.4 用戶界面布局【案例1-4】 窗體界面布局。VB.NET的用戶界面布局功能比VB6.0大大增強(qiáng)了,案例1-4將演示這種效果。通過對控件所提供的Anchor屬性與Dock屬性進(jìn)行適當(dāng)?shù)脑O(shè)置,使得用戶在使用時(shí)可以非常方便地調(diào)整控件的位置與大小?!炯寄苣繕?biāo)】(1

56、) 控件布局的一般調(diào)整。(2) 布局工具欄的使用。(3) 控件Anchor屬性與Dock屬性的運(yùn)用。,【操作要點(diǎn)與步驟】(1) 在VBnet02項(xiàng)目中增加一個(gè)窗體。(2) 在窗體上添加兩個(gè)Panel(面板)控件,并進(jìn)行如下設(shè)置。BoderStyle: Fixed 3D;Dock:左邊Panel1設(shè)為Fill,右邊Panel2設(shè)為Right。這樣Panel2的寬度將保持不變,而高度可以改變;Panel1的寬度與高度將隨窗體的變化而變化。(3) 在Panel2中添加一個(gè)分組框(GroupBox),并將其Text屬性修改為“&Dock”。,對控件的Text屬性進(jìn)行設(shè)置時(shí),若在某字母前加“&”,則可將

57、該字母設(shè)置為該控件的訪問鍵(也稱為熱鍵)。再在分組框中添加6個(gè)單選按鈕,各個(gè)Text屬性設(shè)置如圖1-21(a)所示。將Name屬性設(shè)置成與Text屬性相關(guān),如單選按鈕“None”的Name屬性為rbNone,None控件的Checked屬性為True。,圖1-21 窗體布局演示,(4) 在Panel2中再添加一個(gè)分組框,并加入四個(gè)復(fù)選框,分別命名為cbTop等。(5) 在Panel1中添加一個(gè)Label控件,屬性設(shè)置如下:Text: 你好!TextAlign: MiddleCenter;BoderStyle: Fixed 3D;Font: 25pt,Bold;Anchor: None;Back

58、Color與Forcolor:根據(jù)實(shí)際情況自行設(shè)置。,(6) 編寫事件過程代碼。 6個(gè)單選按鈕的單擊事件(Click)過程如下:Private Sub rb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ rbNone.Click, rbTop.Click, rbLeft.Click, rbBottom.Click, rbRight.Click, rbFill.Click 根據(jù)參數(shù)sender的Text屬性判斷是哪個(gè)單選按鈕 Select Case sender.Text Case &Non

59、e Label1.Dock = DockStyle.None Case &Top,Label1.Dock = DockStyle.Top Case &Left Label1.Dock = DockStyle.Left Case &Bottom Label1.Dock = DockStyle.Bottom Case &Right Label1.Dock = DockStyle.Right Case &Fill Label1.Dock = DockStyle.Fill End SelectEnd Sub, 以下是分別針對4個(gè)復(fù)選框的CheckedChange事件(狀態(tài)改變)過程: Private Sub cbTop_CheckedChanged(ByVal sender As System.Object,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論