《Visual Basic 2005 程序設(shè)計(jì)》第7章 My命名空間_第1頁
《Visual Basic 2005 程序設(shè)計(jì)》第7章 My命名空間_第2頁
《Visual Basic 2005 程序設(shè)計(jì)》第7章 My命名空間_第3頁
《Visual Basic 2005 程序設(shè)計(jì)》第7章 My命名空間_第4頁
《Visual Basic 2005 程序設(shè)計(jì)》第7章 My命名空間_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章My命名空間1本章主要內(nèi)容:My命名空間結(jié)構(gòu)。Tabcontrol選項(xiàng)卡控件。文件操作。OpenFileDialog控件,SaveFileDialog控件和SaveAsFiledialog控件使用。目錄操作、FolderBrowserDialog控件。鍵盤操作。網(wǎng)絡(luò)操作。應(yīng)用程序啟動(dòng)退出事件操作。窗體實(shí)例間互相訪問。2VisualBasic2005提供的My命名空間提供了一系列對象,程序設(shè)計(jì)人員通過這些對象可以方便地訪問和控制計(jì)算機(jī)的相關(guān)內(nèi)容(如文件、目錄操作,剪貼板操作等)、應(yīng)用程序和窗體等。My命名空間對象之間的關(guān)系如圖7-1所示。3圖7-1My命名空間下對象之間的關(guān)系4例7.1構(gòu)建選項(xiàng)卡窗體,演示My命名空間中的相關(guān)功能。具體操作過程:⑴新建項(xiàng)目,選擇“Windows應(yīng)用程序”,項(xiàng)目名稱為“MyComputer命名空間演示”。⑵在解決方案資源管理器中把“Form1.vb”文件名改為“MyComputer命名空間演示.vb”。⑶打開窗體設(shè)計(jì)視圖,選擇窗體,在屬性框中修改窗體的屬性:Name為“frmMyNameSpaceDemo”;StartPosition為“CenterScreen”;Text為“My.Computer命名空間演示”。5⑷為窗體添加選項(xiàng)卡TabControl控件,Name為“myPages”。TabControl控件中的選項(xiàng)卡由空間的TabPages集合管理,在屬性框中單擊TabPages屬性中的按鈕,VisualBasic2005將打開TabPage集合編輯器,如圖7-2所示??梢韵蚣现刑砑映蓡T,選中成員后,還可以修改成員的屬性,如Name和Text等。在本例中,在TabPage集合中共創(chuàng)建5個(gè)選項(xiàng)成員,其中的屬性修改如表7-1所示。6圖7-2TabPage集合編輯器7表7-1My命名空間演示中選項(xiàng)成員及其屬性編號屬性值0NamepagFileOperText文件操作演示1NamepagDirText目錄操作演示2NamepagKeyboardText鍵盤操作演示3NamepagNetworkText網(wǎng)絡(luò)操作演示4NamepagInfoText系統(tǒng)信息8⑸為窗體添加TextBox控件,Name為“txtOutput”,Multiline為True,ScrollBars為Vertical。⑹在“PublicClassfrmMyNameSpaceDemo”后添加過程showText,用于通過txtOutput文本框顯示輸出內(nèi)容:9

'定義通過輸出文本框輸出內(nèi)容過程

PrivateSubShowText(ByValtxtAsString,OptionalByValclearAsBoolean=False)IfclearThen

txtOutput.Text=""'清除輸出框內(nèi)容

EndIf

txtOutput.Text=txtOutput.Text&txtEndSub注意:ShowText中的clear為可選參數(shù),如果為True,則消除輸出內(nèi)容,否則只是在輸出框追加內(nèi)容。10⑺在代碼編輯窗口中,在類名下拉列表中選擇“myPages”,在方法名稱下拉列表中選擇“SelectedIndexChanged”,添加TabControll控件中被選中選項(xiàng)變化事件的響應(yīng)代碼:PrivateSubmyPages_SelectedIndexChanged(ByValsenderAsObject,_

ByValeAsSystem.EventArgs)HandlesmyPages.SelectedIndexChanged'輸出選擇的選項(xiàng)卡的名稱ShowText("您選擇的是:"&myPages.SelectedTab.Text()&vbCrLf,True)EndSub11提示:Tabcontrol控件可以根據(jù)功能需要,對屏幕上顯示的控件進(jìn)行分類,每次只顯示相關(guān)的控件,因此在程序設(shè)計(jì)中經(jīng)常使用。Tabcontrol控件的每個(gè)選項(xiàng)卡都是一個(gè)容器,因此向指定的選項(xiàng)卡中添加控制之前,必須先選中相應(yīng)的選項(xiàng)卡。12可以通過單擊控件中的某一選項(xiàng)卡來更改當(dāng)前的選項(xiàng)卡,也可以使用TabControl

的屬性,以編程的方式更改當(dāng)前的選項(xiàng)卡:myPages.SelectedIndex=x表示編號為x的選項(xiàng)卡被選中;x=myPages.SelectedIndex

返回選中的選項(xiàng)卡的編號。myPages.SelectedTab=tmpTab

表示選項(xiàng)卡對象tmpTab被選中;tmpTab=myPages.SelectedTab

返回選中的選項(xiàng)卡對象。myPages.DeselectTab(x)表示編號為x的選項(xiàng)卡取消選中,其后繼選項(xiàng)卡被選中。13當(dāng)不同選項(xiàng)進(jìn)行切換時(shí),觸發(fā)的事件有:SelectedIndexChanged:選項(xiàng)卡發(fā)生改變發(fā)生。Deselecting:在取消選擇某個(gè)選項(xiàng)卡之前發(fā)生,使處理程序能夠取消選項(xiàng)卡更改。Deselected:當(dāng)取消選擇選項(xiàng)卡時(shí)發(fā)生。Selecting:在選擇某個(gè)選項(xiàng)卡之前發(fā)生,使處理程序能夠選擇選項(xiàng)卡更改。Selected:當(dāng)選擇某個(gè)選項(xiàng)卡時(shí)發(fā)生。14圖7-3My.Computer命名空間演示程序框架運(yùn)行程序,結(jié)果如圖7-3所示。157.1文件操作VisualBasic2005提供了豐富的文件操作方式,如StreamReader和StreamWriter類等。不過使用My.Computer.FileSystem更方便簡潔。167.1.1OpenFileDialog例7.2通過OpenFileDialog類創(chuàng)建選擇文件對話框,提示用戶選擇文件。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),添加:⑴Label控件,Text為“文件名:”。⑵TextBox控件,Name為“txtFilename”。⑶Button控件,Name為“btnBrowseFile”,Text為“瀏覽”。⑷OpenFileDialog控件,Name為“objOpenFile”。17注意:OpenFileDialog為不可見控件,因此只在設(shè)計(jì)窗口的底部顯示OpenFileDialog控件的名字信息。18⑸雙擊“瀏覽”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:

PrivateSubbtnBrowseFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnBrowseFile.Click19

'設(shè)置選擇文件對話框?qū)傩?/p>

objOpenFile.FileName=""

objOpenFile.Filter="CSV格式文件(*.csv)|*.csv|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"

objOpenFile.DefaultExt="txt"

objOpenFile.Title="選擇一個(gè)文本文件"20

'如果選擇文件時(shí)單擊“確定”

IfobjOpenFile.ShowDialog()=Windows.Forms.DialogResult.OKThen

txtFilename.Text=objOpenFile.FileName'記錄、顯示文件名字

EndIfEndSub21運(yùn)行程序,單擊瀏覽按鈕,彈出如圖7-4所示對話框,單擊“打開”,選擇文件,如圖7-5所示。圖7-4選擇文件對話框22圖7-5選擇文件執(zhí)行結(jié)果23提示:OpenFileDialog類常用的屬性有:InitialDirectory

:獲取或設(shè)置文件對話框顯示的初始目錄。例如:objOpenFile.InitialDirectory="c:\"表示指定初始目錄為c:\。24Filter:獲取或設(shè)置當(dāng)前文件名篩選器字符串。例如:objOpenFile.Filter="CSV格式文件(*.csv)|*.csv|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"表示對話框只顯示擴(kuò)展名為txt、csv的文件,或所有文件,則選擇文件時(shí)文件的類型選項(xiàng)下拉列表如圖7-6所示。圖7-6文件名篩選25DefaultExt:獲取或設(shè)置默認(rèn)文件擴(kuò)展名。例如:

objOpenFile.DefaultExt="txt"表示默認(rèn)的文件擴(kuò)展名為txt。Multiselect:獲取或設(shè)置一個(gè)值,該值指示對話框是否允許選擇多個(gè)文件。例如:

objOpenFile.Multiselect=True表示允許選擇多個(gè)文件。當(dāng)需要選擇多個(gè)文件時(shí),按住Ctrl鍵,單擊文件名進(jìn)行選擇。26Title:獲取或設(shè)置文件對話框標(biāo)題。例如:

objOpenFile.Title=“選擇一個(gè)文本文件”,則選擇文件對話框的標(biāo)題顯示“請選擇一個(gè)文本文件”,而不是默認(rèn)的“打開”。FileName:獲取或設(shè)置一個(gè)包含在文件對話框中選定的文件名的字符串。FileNames:當(dāng)Multiselect為True時(shí),獲取對話框中所有選定文件的文件名,返回的文件以String數(shù)組的形式保存。例如:Dimfile,files()AsStringfiles=objOpenFile.FileNamesForEachfileInfiles

依次獲取文件名,對文件file進(jìn)行操作Next277.1.2整體讀取文件內(nèi)容對文件的內(nèi)容按整體進(jìn)行讀取的方式有兩種:⑴使用ReadAllText方法整體讀取文本文件,例如:DimvalueAsString=My.Computer.FileSystem.ReadAllText(file,encoding)file為文件名;encoding為文件的編碼方式,如果省略,文件的編碼方式默認(rèn)為utf8。⑵使用ReadAllBytes

方法整體讀取二進(jìn)制文件,將以字節(jié)數(shù)組的形式返回該文件的內(nèi)容。例如:DimvalueAsByte()=My.Computer.FileSystem.ReadAllBytes(file)file為文件名。28例7.3使用My.Computer.FileSystem.ReadAllText整體讀取文本文件內(nèi)容。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnReadAll”,Text為“整體讀取”。⑵在ShowText過程后再添加過程FileName(),返回選擇的文件名:29

PrivateFunctionFileName()AsStringIfString.IsNullOrEmpty(txtFilename.Text)Then'如果沒有選擇文件名

MessageBox.Show("請先選擇一個(gè)文件名!","提示")'顯示提示信息

ReturnNothing'返回空

ElseReturntxtFilename.Text'返回選擇的文件名

EndIfEndFunction30⑶雙擊“整體讀取”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:

PrivateSubbtnReadAll_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReadAll.ClickDimstrFileNameAsString=FileName()'讀取選擇的文件名

IfstrFileNameIsNothingThen'如果文件名為空

ExitSub'退出過程

Else'否則整體讀取文本文件內(nèi)容

Try

ShowText(My.Computer.FileSystem.ReadAllText(strFileName,_System.Text.Encoding.GetEncoding("gb2312")))CatchexAsException

MessageBox.Show("讀取文件錯(cuò)誤:"&ex.Message,"提示")EndTryEndIfEndSub31提示:System.Text.Encoding.GetEncoding("gb2312")返回編碼名為gb2312的編碼編號。My.Computer.FileSystem.ReadAllText(strFileName,System.Text.Encoding.GetEncoding("gb2312"))中,讀取文件strFileName的內(nèi)容時(shí),內(nèi)容的編碼按gb2312的編碼形式讀取。gb2312是我國漢字的編碼形式之一。32圖7-7整體讀取文本文件內(nèi)容運(yùn)行程序,先選擇文件,然后單擊“整體讀取”按鈕,結(jié)果如圖7-7所示。337.1.3按行讀取文件內(nèi)容按行讀取文件的操作流程為:⑴創(chuàng)建StreamReader流讀取文件內(nèi)容對象:DimfileReaderAsSystem.IO.StreamReader⑵打開通過StreamReader對象讀取的文件:fileReader=My.Computer.FileSystem.OpenTextFileReader(file,encoding)⑶逐行讀取文件內(nèi)容:DimstrAsString=fileReader.ReadLine()34例7.4按行讀取文本文件內(nèi)容。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnReadLine”,Text為“按行讀取”。⑵雙擊“按行讀取”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:35

PrivateSubbtnReadLine_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReadLine.Click'讀取選擇的文件名DimstrFileNameAsString=FileName()IfstrFileNameIsNothingThen'如果文件名為空

ExitSub'退出過程

Else'否則按行讀取文本文件內(nèi)容

'聲明StreamReader對象

DimfileReaderAsSystem.IO.StreamReader

36

Try

fileReader=My.Computer.FileSystem.OpenTextFileReader(strFileName,_System.Text.Encoding.GetEncoding("gb2312"))'打開文件

DimstringReaderAsStringDimintLineAsInteger=0

ShowText("",True)DoWhileNotfileReader.EndOfStream()'一直讀到文件末尾

stringReader=fileReader.ReadLine()'讀取一行

intLine+=1

ShowText("第"&CStr(intLine)&"行:"&stringReader&vbCrLf)LoopCatchexAsException'捕獲讀取文件操作時(shí)的異常

MessageBox.Show("讀取文件錯(cuò)誤:"&ex.Message,"提示")EndTryEndIfEndSub37提示:fileReader.EndOfStream():按流讀取文件內(nèi)容時(shí),如果到達(dá)文件末尾,返回True,否則返回False。fileReader.ReadLine():從當(dāng)前流中讀取一行字符并將數(shù)據(jù)作為字符串返回。38圖7-8按行讀取文本文件內(nèi)容運(yùn)行程序,先選擇文件,然后單擊按行讀取按鈕,結(jié)果如圖7-8所示。397.1.4讀取結(jié)構(gòu)化文件內(nèi)容VisualBasic2005中的TextFieldParser

對象提供了一種可以輕松而高效地分析結(jié)構(gòu)化文本文件(如日志文件等)的方法,可以讀取的結(jié)構(gòu)化文件(包括使用特定字符分隔內(nèi)容的文件)和具有固定寬度文本字段的文件。讀取結(jié)構(gòu)化文件的操作流程為:⑴創(chuàng)建TextFieldParser對象,并指明讀取的文件名及其編碼方式:DimMyReaderAsNewFileIO.TextFieldParser(file,encoding)40⑵定義讀取結(jié)構(gòu)化文件的方式:使用分隔符分隔內(nèi)容,例如使用“,”分隔:MyReader.TextFieldType=FileIO.FieldType.DelimitedMyReader.SetDelimiters(",")使用固定寬度文本字段,例如第一列的寬度為5個(gè)字符,第二列的寬度為10個(gè)字符,第三列的寬度為11個(gè)字符,第四列的寬度可變:MyReader.TextFieldType=FileIO.FieldType.FixedWidthMyReader.SetFieldWidths(5,10,11,-1)⑶每次按結(jié)構(gòu)讀取文件中的一行,每個(gè)字段內(nèi)容保存到數(shù)組中,例如:DimcurrentRowAsString()=MyReader.ReadFields()41例7.5按結(jié)構(gòu)化的方式讀取文本文件內(nèi)容。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnReadStructure”,Text為“結(jié)構(gòu)化讀取”。⑵雙擊“結(jié)構(gòu)化讀取”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:42

PrivateSubbtnReadStructure_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReadStructure.ClickDimstrFileNameAsString=FileName()'讀取選擇的文件名

IfstrFileNameIsNothingThen'如果文件名為空

ExitSub'退出過程

Else'否則按行讀取文本文件內(nèi)容

'聲明結(jié)構(gòu)化讀取文件內(nèi)容的流對象對象

DimreaderAsNewFileIO.TextFieldParser(strFileName,_System.Text.Encoding.GetEncoding("gb2312"))43

'讀取的內(nèi)容的字段被分隔

reader.TextFieldType=FileIO.FieldType.Delimited'文本內(nèi)容字段被分隔字符為","

reader.SetDelimiters(",")DimcurrentRowAsString()'聲明一維數(shù)組,保存讀取的內(nèi)容

ShowText("",True)44

'讀取文件內(nèi)容

DoWhileNotreader.EndOfData()Try

currentRow=reader.ReadFields()'讀取一行

DimcurrentFieldAsStringForEachcurrentFieldIncurrentRow'讀取一行中的每個(gè)字段

ShowText(String.Format("{0,-15}",currentField))'輸出每個(gè)字段

Next

ShowText(vbCrLf)'輸出內(nèi)容換行

CatchexAsException

MessageBox.Show("讀取文件錯(cuò)誤:"&ex.Message,"提示")EndTryLoopEndIfEndSub45提示:String.Format("{0,-15}",currentField):表示對字符串currentField內(nèi)容輸出時(shí)進(jìn)行格式化處理,寬度為15個(gè)字符,負(fù)號表示按左對齊。46圖7-9讀取結(jié)構(gòu)化文本文件內(nèi)容運(yùn)行程序,先選擇文件,然后單擊結(jié)構(gòu)化讀取按鈕,結(jié)果如圖7-9所示。477.1.5SaveFileDialog通過SaveFileDialog類創(chuàng)建保存文件對話框,提示用戶輸入/選擇保存的文件名。例7.6選擇保存文件的文件名。在例7.1中,繼續(xù)上一節(jié)的操作添加獲取保存文件名過程,添加:⑴SaveFileDialog控件,Name為“objSaveFile”。⑵添加過程:48

PrivateFunctionGetDestFilename()AsString'設(shè)置保存文件對話框?qū)傩?/p>

'指定初始目錄

objSaveFile.InitialDirectory=My.Computer.FileSystem.SpecialDirectories.MyDocuments

'指定默認(rèn)文件名

objSaveFile.FileName=My.Computer.FileSystem.GetName(FileName())'修改對話框標(biāo)題

objSaveFile.Title="保存輸出框中的內(nèi)容"49'如果單擊了對話框的確定按鈕

IfoobjSaveFile.ShowDialog()=Windows.Forms.DialogResult.OKThenReturnoobjSaveFile.FileName'返回選擇的文件名

ElseReturnNothing'返回空對象

EndIfEndFunction50提示:SaveFileDialog類的常用屬性和OpenFileDialog類相同。通過My.Computer.FileSystem.SpecialDirectories對象返回一些常用的本地主機(jī)的目錄路徑名,主要有:51AllUsersApplicationData返回AllUsersApplicationData目錄的路徑名。CurrentUserApplicationData返回當(dāng)前用戶的ApplicationData目錄的路徑名。Desktop返回用戶的Desktop目錄的路徑名。MyDocuments返回用戶的“我的文檔”目錄的路徑名。MyMusic返回用戶的“我的音樂”目錄的路徑名。MyPictures返回指向用戶的“圖片收藏”目錄的路徑名。Programs返回指向用戶的Programs目錄的路徑名。Temp表示指向用戶的Temp目錄的路徑名。52My.Computer.FileSystem.GetName(filename)從路徑filename中分析出文件名。類似的操作還有My.Computer.FileSystem.GetParentPath(filename)從路徑filename中分析出上級目錄名。537.1.6保存文件保存文件分為按整體保存和使用StreamWriter流保存兩種方式:⑴整體保存文件內(nèi)容:整體保存文本文件,使用WriteAllText,例如:My.Computer.FileSystem.WriteAllText(savefilename,Text,AppendYN,Encoding)savefilename為保存的文件名;Text為保存的文本內(nèi)容;AppendYN為Boolean類型,True表示在文件savefilename內(nèi)容的后面追加Text,F(xiàn)lase表示使用Text覆蓋文件savefilename中的內(nèi)容;如果savefilename文件為新建文件,或內(nèi)容為空,則該選項(xiàng)不起作用。Encoding為文件的編碼方式,如果省略,文件的編碼方式默認(rèn)為utf8。54整體保存二進(jìn)制文件,使用WriteAllBytes,例如:My.Computer.FileSystem.WriteAllBytes(savefilename,Text,AppendYN)參數(shù)的具體含義和WriteAllText一樣。⑵使用StreamWriter流保存文件:創(chuàng)建StreamWriter流對象:DimfilewriterAsSystem.IO.StreamWriter打開通過StreamWriter

流對象保存的文件:filewriter=My.Computer.FileSystem.OpenTextFileWriter(strFileName,AppendYN,Encoding)寫入文件內(nèi)容:filewriter.Write(Text)將行結(jié)束符寫入文本流:filewriter.WriteLine()55例7.7把上例中文本輸出框中的內(nèi)容按整體保存文本文件內(nèi)容。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnSaveFile”,Text為“保存”。⑵雙擊“保存”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:

PrivateSubbtnSaveFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnSaveFile.ClickIfString.IsNullOrEmpty(txtOutput.Text)Then'如果輸出框沒有任何內(nèi)容

MessageBox.Show("沒有保存的內(nèi)容!","提示")ElseDimsavefilenameAsString=GetDestFilename()'得到保存文件的名字

IfNot(savefilenameIsNothing)Then'如果保存文件名非空

My.Computer.FileSystem.WriteAllText(savefilename,txtOutput.Text,False,_System.Text.Encoding.GetEncoding("gb2312"))'保存輸出框文本內(nèi)容

MessageBox.Show("文件保存到"&savefilename,"提示")'提示保存成功信息

EndIfEndIfEndSub56運(yùn)行程序,先選擇文件,并讀入內(nèi)容,然后單擊保存按鈕,彈出如圖7-10所示對話框,輸入或選擇文件名,單擊“保存”,則完成保存文件的操作。圖7-10選擇保存文件名對話框577.1.7刪除文件通過My.Computer.FileSystem.DeleteFile實(shí)現(xiàn)對指定文件的刪除操作。例7.8刪除選定的文件。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnDeleteFile”,Text為“刪除”。⑵雙擊“刪除”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:58

PrivateSubbtnDeleteFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnDeleteFile.ClickDimstrFileNameAsString=FileName()'讀取選擇的文件名

IfstrFileNameIsNothingThen'如果文件名為空

ExitSub'退出過程

Else'否則進(jìn)行刪除文件操作

'彈出對話框,確認(rèn)是否一定刪除,如果選擇“是”,則刪除,否則不刪除

IfMessageBox.Show("確定要?jiǎng)h除文件:"&FileName()&"?","提示",_MessageBoxButtons.YesNo,MessageBoxIcon.Asterisk)=_Windows.Forms.DialogResult.YesThenTry

My.Computer.FileSystem.DeleteFile(FileName)'刪除文件

CatchexAsException'捕獲刪除文件時(shí)的異常

MessageBox.Show("刪除文件錯(cuò)誤:"&ex.Message,"提示")EndTry

txtFilename.Text=""'清空文件名文本框內(nèi)容

MessageBox.Show("已經(jīng)刪除文件:"&strFileName,"提示")'提示刪除成功

EndIfEndIfEndSub59運(yùn)行程序,先選擇文件,單擊刪除按鈕,彈出如圖7-11所示對話框,如果單擊“是”,則刪除選擇的文件。圖7-11刪除文件提示對話框607.1.8拷貝文件通過My.Computer.FileSystem.CopyFile實(shí)現(xiàn)把指定文件拷貝到目標(biāo)目錄。語句格式為:My.Computer.FileSystem.CopyFile(strFileName,dstfilename,overwrite)把文件strFileName拷貝到目標(biāo)dstfilename目錄或文件,如果overwrite為True,且目標(biāo)文件存在,則不覆蓋目標(biāo)文件,否則覆蓋目標(biāo)文件。61例7.9拷貝選定的文件。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnCopyFile”,Text為“拷貝”。⑵雙擊“拷貝”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:62

PrivateSubbtnCopyFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnCopyFile.ClickDimstrFileNameAsString=FileName()'讀取選擇的文件名

IfstrFileNameIsNothingThen'如果文件名為空

ExitSub'退出過程

Else'否則進(jìn)行拷貝文件操作

DimdstfilenameAsString=GetDestFilename()'得到目標(biāo)文件的名字

IfNot(dstfilenameIsNothing)Then'如果目標(biāo)文件名非空

Try'拷貝文件My.Computer.FileSystem.CopyFile(strFileName,dstfilename,True)CatchexAsException

MessageBox.Show("拷貝文件錯(cuò)誤:"&ex.Message,"提示")EndTry'提示拷貝成功MessageBox.Show("已經(jīng)拷貝文件"&strFileName&"到"&dstfilename,"提示")EndIfEndIfEndSub63提示:使用My.Computer.FileSystem.MoveFile實(shí)現(xiàn)移動(dòng)文件,其操作和My.Computer.FileSystem.CopyFile

基本相同。移動(dòng)文件是只將源文件移動(dòng)到指定的目錄,執(zhí)行移動(dòng)操作后在原目錄源文件將不再存在;拷貝文件操作是指將源文件的一個(gè)備份拷貝到指定的目錄,執(zhí)行拷貝操作后原目錄中的源文件還存在。647.1.9文件信息通過My.Computer.FileSystem.GetFileInfo獲取指定文件的FileInfo對象,例如:DiminfoFileAsSystem.IO.FileInfo=My.Computer.FileSystem.GetFileInfo(file)通過infoFile

對象可以對文件進(jìn)行各種操作,并獲取文件的一些屬性。例7.10顯示選定文件的信息。在例7.1中,選擇TabControl控件中文件操作演示選項(xiàng),繼續(xù)上一節(jié)的操作添加:⑴Button控件,Name為“btnFileInfo”,Text為“文件信息”。⑵雙擊文件信息按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:65

PrivateSubbtnFileInfo_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnFileInfo.ClickDimstrFileNameAsString=FileName()'讀取選擇的文件名

IfstrFileNameIsNothingThen'如果文件名為空

ExitSub'退出過程

Else'否則進(jìn)行顯示文件信息操作

DiminfoFileAsSystem.IO.FileInfo=My.Computer.FileSystem.GetFileInfo(strFileName)

ShowText("",True)'清空輸出框內(nèi)容

ShowText("文件名:"&infoFile.Name()&vbCrLf)

ShowText("路徑名:"&infoFile.DirectoryName()&vbCrLf)

ShowText("長度:"&infoFile.Length.ToString()&vbCrLf)

ShowText("建立日期:"&infoFile.CreationTime.ToString()&vbCrLf)

ShowText("最后一次訪問日期:"&infoFile.LastAccessTime.ToString()&vbCrLf)

ShowText("最后一次寫入日期:"&infoFile.LastWriteTime.ToString()&vbCrLf)EndIfEndSub66運(yùn)行程序,先選擇文件,單擊文件信息按鈕,顯示結(jié)果如圖7-12所示。圖7-12顯示文件信息677.2目錄操作在前面介紹的文件操作中,通過My.Computer.FileSystem.GetParentPath(filename)、infoFile.DirectoryName()等可以獲取文件所在目錄的信息,下面主要介紹選擇目錄對話框操作和讀取目錄中的子目錄列表、文件列表操作。687.2.1FolderBrowserDialog通過FolderBrowserDialog類創(chuàng)建選擇目錄對話框,提示用戶選擇目錄。例7.11通過FolderBrowserDialog對話框選擇目錄。在例7.1中,選擇TabControl控件中目錄操作演示選項(xiàng),添加:⑴Label控件,Text為“目錄名:”。⑵TextBox控件,Name為“txtDirName”。⑶FolderBrowserDialog控件,Name為“objOpenDir。⑷Button控件,Name為“btnBrowseDir”,Text為“瀏覽”。⑸雙擊“瀏覽”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:69

PrivateSubbtnBrowseDir_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnBrowseDir.Click'設(shè)置打開目錄對話框?qū)傩?/p>

objOpenDir.Description="請選擇一個(gè)目錄"'默認(rèn)的根目錄為“我的文檔”

objOpenDir.RootFolder=Environment.SpecialFolder.MyDocuments

objOpenDir.ShowNewFolderButton=False'不顯示“新建目錄”按鈕

'如果選擇目錄時(shí)單擊“確定”

IfobjOpenDir.ShowDialog()=Windows.Forms.DialogResult.OKThen

txtDirName.Text=objOpenDir.SelectedPath()'顯示選擇的目錄名

EndIfEndSub70運(yùn)行程序,選擇目錄操作演示選項(xiàng),單擊瀏覽按鈕,彈出如圖7-13所示對話框,單擊“確定”,選擇目錄,如圖7-14所示。圖7-13選擇目錄對話框71圖7-14選擇文件執(zhí)行結(jié)果72提示:Environment.SpecialFolder可以指定一些常用的特殊目錄,如:73CookiesInternetCookie的存儲(chǔ)目錄。Desktop桌面目錄。Favorites用作用戶收藏夾項(xiàng)的存儲(chǔ)目錄。

History用作Internet歷史記錄項(xiàng)的存儲(chǔ)目錄。

InternetCache用作Internet臨時(shí)文件的存儲(chǔ)目錄。

MyDocuments“我的文檔”文件夾。

MyMusic“MyMusic”文件夾。

MyPictures“MyPictures”文件夾。

System“System”目錄。

74objOpenDir.ShowNewFolderButton=True,顯示“新建文件夾”按鈕,通過該按鈕可以新建文件夾;objOpenDir.ShowNewFolderButton=False則不顯“新建文件夾”按鈕。objOpenDir.SelectedPath()返回選擇的目錄名。757.2.2顯示子目錄獲取指定目錄strDir中子目錄列表的語句為:My.Computer.FileSystem.GetDirectories(strDir)例7.12列出指定目錄中的子目錄信息。在例7.1中,選擇TabControl控件中目錄操作演示選項(xiàng),添加:⑴Button控件,Name為“btnSubDirList”,Text為“子目錄列表”。⑵雙擊“子目錄列表”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:76

PrivateSubbtnSubDirList_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnSubDirList.ClickDimstrDirAsString=txtDirName.Text'讀取選擇的目錄名

IfString.IsNullOrEmpty(strDir)Then

MessageBox.Show("請先選擇一個(gè)目錄名!","提示")Else

ShowText("",True)'清空輸出框內(nèi)容

TryForEachstrDAsStringInMy.Computer.FileSystem.GetDirectories(strDir)

ShowText(strD&vbCrLf)'顯示子目錄列表

NextCatchexAsException

MessageBox.Show("讀取子目錄列表錯(cuò)誤:"&ex.Message,"提示")EndTryEndIfEndSub77運(yùn)行程序,選擇目錄操作演示選項(xiàng),選擇目錄,單擊子目錄列表按鈕,結(jié)果如圖7-15所示。圖7-15子目錄列表執(zhí)行結(jié)果787.2.3顯示目錄中文件列表獲取指定目錄strDir中文件錄列表的語句為:My.Computer.FileSystem.GetFiles(strDir)例7.13列出指定目錄中的文件錄信息。在例7.1中,選擇TabControl控件中目錄操作演示選項(xiàng),添加:⑴Button控件,Name為“btnFilesList”,Text為“文件列表”。⑵雙擊“文件列表”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:79

PrivateSubbtnFilesList_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnFilesList.ClickDimstrDirAsString=txtDirName.Text'讀取選擇的目錄名

IfString.IsNullOrEmpty(strDir)Then

MessageBox.Show("請先選擇一個(gè)目錄名!","提示")Else

ShowText("",True)'清空輸出框內(nèi)容

TryForEachstrFileAsStringInMy.Computer.FileSystem.GetFiles(strDir)

ShowText(strFile&vbCrLf)NextCatchexAsException

MessageBox.Show("讀取文件列表錯(cuò)誤:"&ex.Message,"提示")EndTryEndIfEndSub80運(yùn)行程序,選擇目錄操作演示選項(xiàng),選擇目錄,單擊子目錄列表按鈕,結(jié)果如圖7-16所示。圖7-16文件列表執(zhí)行結(jié)果817.3鍵盤操作My.Computer.Keyboard和My.Computer.Mouse對象提供了對系統(tǒng)鍵盤和鼠標(biāo)的訪問功能,如獲取鍵盤的當(dāng)前狀態(tài)、發(fā)送按鍵、檢測系統(tǒng)鼠標(biāo)的設(shè)置信息等。827.3.1檢測按鍵狀態(tài)通過My.Computer.Keyboard對象下例屬性可以獲取鍵盤的當(dāng)前狀態(tài):83CapsLock檢測是否打開了CapsLockNumLock檢測是否打開了NumLockScrollLock檢測是否打開了ScrollLockShiftKeyDown按下Shift鍵返回True,否則返回FalseAltKeyDown按下Alt鍵返回True,否則返回FalseCtrlKeyDown按下Ctrl鍵返回True,否則返回False84例7.14顯示鍵盤的當(dāng)前狀態(tài)。在例7.1中,選擇TabControl控件中鍵盤操作演示選項(xiàng),添加:⑴Button控件,Name為“btnKeyStatus”,Text為“按鍵狀態(tài)”。⑵雙擊“按鍵狀態(tài)”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:85

PrivateSubbtnKeyStatus_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnKeyStatus.ClickDimstrOutAsString

strOut=CStr(IIf(My.Computer.Keyboard.CapsLock(),"CapsLock

已打開","CapsLock

沒有打開"))&vbCrLf

strOut&=CStr(IIf(My.Computer.Keyboard.CtrlKeyDown(),"Ctrl鍵按下","Ctrl鍵沒有按下"))&vbCrLf

strOut&=CStr(IIf(My.Computer.Keyboard.ShiftKeyDown(),"Shift鍵按下","Shift鍵沒有按下"))&vbCrLf

ShowText(strOut,True)EndSub86運(yùn)行程序,選擇鍵盤操作演示選項(xiàng),如果按住Shift和Ctrl鍵,單擊按鍵狀態(tài)按鈕,則輸出結(jié)果如圖7-17所示。圖7-17按鍵狀態(tài)檢查877.3.2發(fā)送按鍵通過My.Computer.Keyboard對象的SendKeys方法向活動(dòng)窗口發(fā)送一個(gè)或多個(gè)擊鍵,如同在鍵盤上輸入一樣。其語句格式為:My.Computer.Keyboard.SendKeys(keys,wait)Keys是要發(fā)送的擊鍵內(nèi)容,wait是Boolean類型,用于指定是否等待擊鍵處理完畢,然后再繼續(xù)運(yùn)行應(yīng)用程序,默認(rèn)為True。如果要發(fā)送組合Ctrl鍵,需要在按鍵前加“^”;發(fā)送組合Alt鍵,需要在按鍵前加“%”;發(fā)送組合Shift鍵,需要在按鍵前加“+”。其它一些特殊按鍵及其代碼如表7-2所示。88按鍵按鍵代碼Backspace{BACKSPACE}或{BS}Break{BREAK}CapsLock{CAPSLOCK}Clear{CLEAR}Delete{DELETE}或{DEL}向下鍵{DOWN}End{END}Enter(數(shù)字鍵盤){ENTER}Enter~Esc{ESCAPE}或{ESC}Help{HELP}Home{HOME}Ins鍵{INSERT}向左鍵{LEFT}NumLock{NUMLOCK}PageDown{PGDN}PageUp{PGUP}Return{RETURN}向右鍵{RIGHT}ScrollLock{SCROLLLOCK}Tab{TAB}向上鍵{UP}F1至F15{F1}至{F15}89例7.15通過My.Computer.Keyboard對象的SendKeys控制Notepad.exe的啟動(dòng)、關(guān)閉和內(nèi)容輸入。在例7.1中,選擇TabControl控件中鍵盤操作演示選項(xiàng),主要操作是,先打開Notepad.exe程序,發(fā)送一些文本內(nèi)容到Notepad中,然后選擇發(fā)送的內(nèi)容,并通過Ctrl+C拷貝內(nèi)容到系統(tǒng)剪切板,關(guān)閉Notepad程序,最后在輸出框輸出剪切板中的內(nèi)容。為此,需要添加:⑴Button控件,Name為“btnSendKeys”,Text為“發(fā)送按鍵”。⑵雙擊“發(fā)送按鍵”按鈕,在代碼編輯器中添加Click事件響應(yīng)的代碼:90

PrivateSubbtnSendKeys_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnSendKeys.ClickDimProcIDAsInteger'啟動(dòng)notepad并返回進(jìn)程號

ProcID=Shell("notepad.exe",AppWinStyle.NormalFocus)'激活該進(jìn)程

AppActivate(ProcID)'向啟動(dòng)的notepad發(fā)送按鍵

DimstrInputAsString="歡迎使用《VisualBasic2005程序設(shè)計(jì)》!"&vbCrLfForEachstrAsStringInstrInput

My.Computer.Keyboard.SendKeys(str)Next91

My.Computer.Keyboard.SendKeys("^a")'發(fā)送鍵Ctrl+C

拷貝選擇的內(nèi)容到系統(tǒng)剪貼板

My.Computer.Keyboard.SendKeys("^c")'發(fā)送鍵Alt+F4關(guān)閉notepadMy.Computer.Keyboard.SendKeys("%{f4}")'發(fā)送鍵n,不保存輸入的內(nèi)容

My.Computer.Keyboard.SendKeys("%n")'讀取剪貼板中的內(nèi)容,通過輸出文本框輸出

ShowText(My.Computer.Clipboard.GetText(),True)EndSub92運(yùn)行程序,選擇鍵盤操作演示選項(xiàng),單擊“發(fā)送按鍵”按鈕,則看到Notepad程序啟動(dòng),同時(shí)自動(dòng)輸入一些按鍵內(nèi)容,最后Notepad程序退出,演示程序輸出結(jié)果如圖7-18所示,其中輸出文本框中的內(nèi)容是從Notepad拷貝到剪切板中,再粘貼到輸出文本框。93圖7-18發(fā)送按鍵執(zhí)行結(jié)果94提示:Shell("notepad.exe",AppWinStyle.NormalFocus):表示運(yùn)行一個(gè)可執(zhí)行程序notepad.exe,由于該程序仍然在運(yùn)行,則返回一個(gè)包含該程序的進(jìn)程ID的整數(shù)。AppWinStyle.NormalFocus表示notepad.exe程序窗口具有焦點(diǎn),且窗口大小和位置為默認(rèn)值。AppActivate(ProcID):激活進(jìn)程號為ProcID的已經(jīng)運(yùn)行的應(yīng)用程序。My.Computer.Clipboard.GetText():讀取剪切板中的文本內(nèi)容。957.4網(wǎng)絡(luò)操作使用VisualBasic開發(fā)具有網(wǎng)絡(luò)功能的應(yīng)用程序時(shí),一般需要使用WinSock控件,但這個(gè)控件使用比較復(fù)雜。為此,VisualBasic2005通過My.Computer.Network對象封裝了一些常用的網(wǎng)絡(luò)操作屬性和方法:⑴檢測本地主機(jī)網(wǎng)絡(luò)的可用情況:基本格式:My.Computer.Network.IsAvailable(),返回True表示本地主機(jī)網(wǎng)絡(luò)可用,F(xiàn)alse表示不可用。96⑵確定遠(yuǎn)程主機(jī)是否可用:基本格式:Ping(RemoteHostName或IPAddress,timeout),返回True表示遠(yuǎn)程主機(jī)可用,F(xiàn)alse表示不可用。其中遠(yuǎn)程主機(jī)使用域名地址(如)或IP地址(如)標(biāo)識,timeout連接目標(biāo)的時(shí)間閾值(單位為毫秒),默認(rèn)值為500。注意:遠(yuǎn)程主機(jī)的防火墻如果過濾ICMP協(xié)議,則有可能不能正確探測遠(yuǎn)程主機(jī)的可用情況。97⑶從網(wǎng)站下載文件:基本格式:DownloadFile(address,destinationFileName),遠(yuǎn)程文件address為URL格式,destinationFileName為保存到本地主機(jī)的目錄及文件名。⑷上傳文件到遠(yuǎn)程網(wǎng)站:基本格式:UploadFile(sourceFileName,address),把本地主機(jī)中的文件sourceFileName上傳到遠(yuǎn)程網(wǎng)站address。98例7.16實(shí)時(shí)監(jiān)控指定的遠(yuǎn)程主機(jī)是否可用。下面演示實(shí)時(shí)確定遠(yuǎn)程主機(jī)是否可用的操作。分析:為了實(shí)時(shí)確定遠(yuǎn)程主機(jī)是否可用,需要每隔一定的時(shí)間,使用Ping探測遠(yuǎn)程主機(jī)是否可用,為此,需要使用Timer控件,Timer控件能夠每隔指定的時(shí)間觸發(fā)事件。在例7.1中,選擇TabControl控件中網(wǎng)絡(luò)操作演示選項(xiàng),添加:⑴Label控件,Text為“輸入目標(biāo)地址:”。⑵TextBox控件,Name為“txtDestAddress”。⑶Timer控件,Name為“TimerPing”,Interval為“10000”。⑷雙擊“TimerPing”,在代碼編輯器中添加Timer控件Tick事件響應(yīng)代碼:99

PrivateSubTimerPing_Tick(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesTimerPing.Tick'判斷輸入的目的地址是否為空

IfString.IsNullOrEmpty(txtDestAddress.Text)Then

ShowText("請輸入目標(biāo)地址!",True)EndIf

DimstrDestAsString=txtDestAddress.Text'讀取目標(biāo)地址

DimstrTimeAsString=My.Computer.Clock.LocalTime.ToString()'獲取當(dāng)前時(shí)間

TryIfMy.Computer.Network.Ping(strDest,1000)Then

溫馨提示

  • 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

提交評論