《Visual Basic 2005 程序设计》第7章 My命名空间_第1页
《Visual Basic 2005 程序设计》第7章 My命名空间_第2页
《Visual Basic 2005 程序设计》第7章 My命名空间_第3页
《Visual Basic 2005 程序设计》第7章 My命名空间_第4页
《Visual Basic 2005 程序设计》第7章 My命名空间_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章My命名空间1本章主要内容:My命名空间结构。Tabcontrol选项卡控件。文件操作。OpenFileDialog控件,SaveFileDialog控件和SaveAsFiledialog控件使用。目录操作、FolderBrowserDialog控件。键盘操作。网络操作。应用程序启动退出事件操作。窗体实例间互相访问。2VisualBasic2005提供的My命名空间提供了一系列对象,程序设计人员通过这些对象可以方便地访问和控制计算机的相关内容(如文件、目录操作,剪贴板操作等)、应用程序和窗体等。My命名空间对象之间的关系如图7-1所示。3图7-1My命名空间下对象之间的关系4例7.1构建选项卡窗体,演示My命名空间中的相关功能。具体操作过程:⑴新建项目,选择“Windows应用程序”,项目名称为“MyComputer命名空间演示”。⑵在解决方案资源管理器中把“Form1.vb”文件名改为“MyComputer命名空间演示.vb”。⑶打开窗体设计视图,选择窗体,在属性框中修改窗体的属性:Name为“frmMyNameSpaceDemo”;StartPosition为“CenterScreen”;Text为“My.Computer命名空间演示”。5⑷为窗体添加选项卡TabControl控件,Name为“myPages”。TabControl控件中的选项卡由空间的TabPages集合管理,在属性框中单击TabPages属性中的按钮,VisualBasic2005将打开TabPage集合编辑器,如图7-2所示。可以向集合中添加成员,选中成员后,还可以修改成员的属性,如Name和Text等。在本例中,在TabPage集合中共创建5个选项成员,其中的属性修改如表7-1所示。6图7-2TabPage集合编辑器7表7-1My命名空间演示中选项成员及其属性编号属性值0NamepagFileOperText文件操作演示1NamepagDirText目录操作演示2NamepagKeyboardText键盘操作演示3NamepagNetworkText网络操作演示4NamepagInfoText系统信息8⑸为窗体添加TextBox控件,Name为“txtOutput”,Multiline为True,ScrollBars为Vertical。⑹在“PublicClassfrmMyNameSpaceDemo”后添加过程showText,用于通过txtOutput文本框显示输出内容:9

'定义通过输出文本框输出内容过程

PrivateSubShowText(ByValtxtAsString,OptionalByValclearAsBoolean=False)IfclearThen

txtOutput.Text=""'清除输出框内容

EndIf

txtOutput.Text=txtOutput.Text&txtEndSub注意:ShowText中的clear为可选参数,如果为True,则消除输出内容,否则只是在输出框追加内容。10⑺在代码编辑窗口中,在类名下拉列表中选择“myPages”,在方法名称下拉列表中选择“SelectedIndexChanged”,添加TabControll控件中被选中选项变化事件的响应代码:PrivateSubmyPages_SelectedIndexChanged(ByValsenderAsObject,_

ByValeAsSystem.EventArgs)HandlesmyPages.SelectedIndexChanged'输出选择的选项卡的名称ShowText("您选择的是:"&myPages.SelectedTab.Text()&vbCrLf,True)EndSub11提示:Tabcontrol控件可以根据功能需要,对屏幕上显示的控件进行分类,每次只显示相关的控件,因此在程序设计中经常使用。Tabcontrol控件的每个选项卡都是一个容器,因此向指定的选项卡中添加控制之前,必须先选中相应的选项卡。12可以通过单击控件中的某一选项卡来更改当前的选项卡,也可以使用TabControl

的属性,以编程的方式更改当前的选项卡:myPages.SelectedIndex=x表示编号为x的选项卡被选中;x=myPages.SelectedIndex

返回选中的选项卡的编号。myPages.SelectedTab=tmpTab

表示选项卡对象tmpTab被选中;tmpTab=myPages.SelectedTab

返回选中的选项卡对象。myPages.DeselectTab(x)表示编号为x的选项卡取消选中,其后继选项卡被选中。13当不同选项进行切换时,触发的事件有:SelectedIndexChanged:选项卡发生改变发生。Deselecting:在取消选择某个选项卡之前发生,使处理程序能够取消选项卡更改。Deselected:当取消选择选项卡时发生。Selecting:在选择某个选项卡之前发生,使处理程序能够选择选项卡更改。Selected:当选择某个选项卡时发生。14图7-3My.Computer命名空间演示程序框架运行程序,结果如图7-3所示。157.1文件操作VisualBasic2005提供了丰富的文件操作方式,如StreamReader和StreamWriter类等。不过使用My.Computer.FileSystem更方便简洁。167.1.1OpenFileDialog例7.2通过OpenFileDialog类创建选择文件对话框,提示用户选择文件。在例7.1中,选择TabControl控件中文件操作演示选项,添加:⑴Label控件,Text为“文件名:”。⑵TextBox控件,Name为“txtFilename”。⑶Button控件,Name为“btnBrowseFile”,Text为“浏览”。⑷OpenFileDialog控件,Name为“objOpenFile”。17注意:OpenFileDialog为不可见控件,因此只在设计窗口的底部显示OpenFileDialog控件的名字信息。18⑸双击“浏览”按钮,在代码编辑器中添加Click事件响应的代码:

PrivateSubbtnBrowseFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnBrowseFile.Click19

'设置选择文件对话框属性

objOpenFile.FileName=""

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

objOpenFile.DefaultExt="txt"

objOpenFile.Title="选择一个文本文件"20

'如果选择文件时单击“确定”

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

txtFilename.Text=objOpenFile.FileName'记录、显示文件名字

EndIfEndSub21运行程序,单击浏览按钮,弹出如图7-4所示对话框,单击“打开”,选择文件,如图7-5所示。图7-4选择文件对话框22图7-5选择文件执行结果23提示:OpenFileDialog类常用的属性有:InitialDirectory

:获取或设置文件对话框显示的初始目录。例如:objOpenFile.InitialDirectory="c:\"表示指定初始目录为c:\。24Filter:获取或设置当前文件名筛选器字符串。例如:objOpenFile.Filter="CSV格式文件(*.csv)|*.csv|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"表示对话框只显示扩展名为txt、csv的文件,或所有文件,则选择文件时文件的类型选项下拉列表如图7-6所示。图7-6文件名筛选25DefaultExt:获取或设置默认文件扩展名。例如:

objOpenFile.DefaultExt="txt"表示默认的文件扩展名为txt。Multiselect:获取或设置一个值,该值指示对话框是否允许选择多个文件。例如:

objOpenFile.Multiselect=True表示允许选择多个文件。当需要选择多个文件时,按住Ctrl键,单击文件名进行选择。26Title:获取或设置文件对话框标题。例如:

objOpenFile.Title=“选择一个文本文件”,则选择文件对话框的标题显示“请选择一个文本文件”,而不是默认的“打开”。FileName:获取或设置一个包含在文件对话框中选定的文件名的字符串。FileNames:当Multiselect为True时,获取对话框中所有选定文件的文件名,返回的文件以String数组的形式保存。例如:Dimfile,files()AsStringfiles=objOpenFile.FileNamesForEachfileInfiles

依次获取文件名,对文件file进行操作Next277.1.2整体读取文件内容对文件的内容按整体进行读取的方式有两种:⑴使用ReadAllText方法整体读取文本文件,例如:DimvalueAsString=My.Computer.FileSystem.ReadAllText(file,encoding)file为文件名;encoding为文件的编码方式,如果省略,文件的编码方式默认为utf8。⑵使用ReadAllBytes

方法整体读取二进制文件,将以字节数组的形式返回该文件的内容。例如:DimvalueAsByte()=My.Computer.FileSystem.ReadAllBytes(file)file为文件名。28例7.3使用My.Computer.FileSystem.ReadAllText整体读取文本文件内容。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnReadAll”,Text为“整体读取”。⑵在ShowText过程后再添加过程FileName(),返回选择的文件名:29

PrivateFunctionFileName()AsStringIfString.IsNullOrEmpty(txtFilename.Text)Then'如果没有选择文件名

MessageBox.Show("请先选择一个文件名!","提示")'显示提示信息

ReturnNothing'返回空

ElseReturntxtFilename.Text'返回选择的文件名

EndIfEndFunction30⑶双击“整体读取”按钮,在代码编辑器中添加Click事件响应的代码:

PrivateSubbtnReadAll_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReadAll.ClickDimstrFileNameAsString=FileName()'读取选择的文件名

IfstrFileNameIsNothingThen'如果文件名为空

ExitSub'退出过程

Else'否则整体读取文本文件内容

Try

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

MessageBox.Show("读取文件错误:"&ex.Message,"提示")EndTryEndIfEndSub31提示:System.Text.Encoding.GetEncoding("gb2312")返回编码名为gb2312的编码编号。My.Computer.FileSystem.ReadAllText(strFileName,System.Text.Encoding.GetEncoding("gb2312"))中,读取文件strFileName的内容时,内容的编码按gb2312的编码形式读取。gb2312是我国汉字的编码形式之一。32图7-7整体读取文本文件内容运行程序,先选择文件,然后单击“整体读取”按钮,结果如图7-7所示。337.1.3按行读取文件内容按行读取文件的操作流程为:⑴创建StreamReader流读取文件内容对象:DimfileReaderAsSystem.IO.StreamReader⑵打开通过StreamReader对象读取的文件:fileReader=My.Computer.FileSystem.OpenTextFileReader(file,encoding)⑶逐行读取文件内容:DimstrAsString=fileReader.ReadLine()34例7.4按行读取文本文件内容。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnReadLine”,Text为“按行读取”。⑵双击“按行读取”按钮,在代码编辑器中添加Click事件响应的代码:35

PrivateSubbtnReadLine_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReadLine.Click'读取选择的文件名DimstrFileNameAsString=FileName()IfstrFileNameIsNothingThen'如果文件名为空

ExitSub'退出过程

Else'否则按行读取文本文件内容

'声明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'捕获读取文件操作时的异常

MessageBox.Show("读取文件错误:"&ex.Message,"提示")EndTryEndIfEndSub37提示:fileReader.EndOfStream():按流读取文件内容时,如果到达文件末尾,返回True,否则返回False。fileReader.ReadLine():从当前流中读取一行字符并将数据作为字符串返回。38图7-8按行读取文本文件内容运行程序,先选择文件,然后单击按行读取按钮,结果如图7-8所示。397.1.4读取结构化文件内容VisualBasic2005中的TextFieldParser

对象提供了一种可以轻松而高效地分析结构化文本文件(如日志文件等)的方法,可以读取的结构化文件(包括使用特定字符分隔内容的文件)和具有固定宽度文本字段的文件。读取结构化文件的操作流程为:⑴创建TextFieldParser对象,并指明读取的文件名及其编码方式:DimMyReaderAsNewFileIO.TextFieldParser(file,encoding)40⑵定义读取结构化文件的方式:使用分隔符分隔内容,例如使用“,”分隔:MyReader.TextFieldType=FileIO.FieldType.DelimitedMyReader.SetDelimiters(",")使用固定宽度文本字段,例如第一列的宽度为5个字符,第二列的宽度为10个字符,第三列的宽度为11个字符,第四列的宽度可变:MyReader.TextFieldType=FileIO.FieldType.FixedWidthMyReader.SetFieldWidths(5,10,11,-1)⑶每次按结构读取文件中的一行,每个字段内容保存到数组中,例如:DimcurrentRowAsString()=MyReader.ReadFields()41例7.5按结构化的方式读取文本文件内容。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnReadStructure”,Text为“结构化读取”。⑵双击“结构化读取”按钮,在代码编辑器中添加Click事件响应的代码:42

PrivateSubbtnReadStructure_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnReadStructure.ClickDimstrFileNameAsString=FileName()'读取选择的文件名

IfstrFileNameIsNothingThen'如果文件名为空

ExitSub'退出过程

Else'否则按行读取文本文件内容

'声明结构化读取文件内容的流对象对象

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

'读取的内容的字段被分隔

reader.TextFieldType=FileIO.FieldType.Delimited'文本内容字段被分隔字符为","

reader.SetDelimiters(",")DimcurrentRowAsString()'声明一维数组,保存读取的内容

ShowText("",True)44

'读取文件内容

DoWhileNotreader.EndOfData()Try

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

DimcurrentFieldAsStringForEachcurrentFieldIncurrentRow'读取一行中的每个字段

ShowText(String.Format("{0,-15}",currentField))'输出每个字段

Next

ShowText(vbCrLf)'输出内容换行

CatchexAsException

MessageBox.Show("读取文件错误:"&ex.Message,"提示")EndTryLoopEndIfEndSub45提示:String.Format("{0,-15}",currentField):表示对字符串currentField内容输出时进行格式化处理,宽度为15个字符,负号表示按左对齐。46图7-9读取结构化文本文件内容运行程序,先选择文件,然后单击结构化读取按钮,结果如图7-9所示。477.1.5SaveFileDialog通过SaveFileDialog类创建保存文件对话框,提示用户输入/选择保存的文件名。例7.6选择保存文件的文件名。在例7.1中,继续上一节的操作添加获取保存文件名过程,添加:⑴SaveFileDialog控件,Name为“objSaveFile”。⑵添加过程:48

PrivateFunctionGetDestFilename()AsString'设置保存文件对话框属性

'指定初始目录

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

'指定默认文件名

objSaveFile.FileName=My.Computer.FileSystem.GetName(FileName())'修改对话框标题

objSaveFile.Title="保存输出框中的内容"49'如果单击了对话框的确定按钮

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

ElseReturnNothing'返回空对象

EndIfEndFunction50提示:SaveFileDialog类的常用属性和OpenFileDialog类相同。通过My.Computer.FileSystem.SpecialDirectories对象返回一些常用的本地主机的目录路径名,主要有:51AllUsersApplicationData返回AllUsersApplicationData目录的路径名。CurrentUserApplicationData返回当前用户的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流保存两种方式:⑴整体保存文件内容:整体保存文本文件,使用WriteAllText,例如:My.Computer.FileSystem.WriteAllText(savefilename,Text,AppendYN,Encoding)savefilename为保存的文件名;Text为保存的文本内容;AppendYN为Boolean类型,True表示在文件savefilename内容的后面追加Text,Flase表示使用Text覆盖文件savefilename中的内容;如果savefilename文件为新建文件,或内容为空,则该选项不起作用。Encoding为文件的编码方式,如果省略,文件的编码方式默认为utf8。54整体保存二进制文件,使用WriteAllBytes,例如:My.Computer.FileSystem.WriteAllBytes(savefilename,Text,AppendYN)参数的具体含义和WriteAllText一样。⑵使用StreamWriter流保存文件:创建StreamWriter流对象:DimfilewriterAsSystem.IO.StreamWriter打开通过StreamWriter

流对象保存的文件:filewriter=My.Computer.FileSystem.OpenTextFileWriter(strFileName,AppendYN,Encoding)写入文件内容:filewriter.Write(Text)将行结束符写入文本流:filewriter.WriteLine()55例7.7把上例中文本输出框中的内容按整体保存文本文件内容。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnSaveFile”,Text为“保存”。⑵双击“保存”按钮,在代码编辑器中添加Click事件响应的代码:

PrivateSubbtnSaveFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnSaveFile.ClickIfString.IsNullOrEmpty(txtOutput.Text)Then'如果输出框没有任何内容

MessageBox.Show("没有保存的内容!","提示")ElseDimsavefilenameAsString=GetDestFilename()'得到保存文件的名字

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

My.Computer.FileSystem.WriteAllText(savefilename,txtOutput.Text,False,_System.Text.Encoding.GetEncoding("gb2312"))'保存输出框文本内容

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

EndIfEndIfEndSub56运行程序,先选择文件,并读入内容,然后单击保存按钮,弹出如图7-10所示对话框,输入或选择文件名,单击“保存”,则完成保存文件的操作。图7-10选择保存文件名对话框577.1.7删除文件通过My.Computer.FileSystem.DeleteFile实现对指定文件的删除操作。例7.8删除选定的文件。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnDeleteFile”,Text为“删除”。⑵双击“删除”按钮,在代码编辑器中添加Click事件响应的代码:58

PrivateSubbtnDeleteFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnDeleteFile.ClickDimstrFileNameAsString=FileName()'读取选择的文件名

IfstrFileNameIsNothingThen'如果文件名为空

ExitSub'退出过程

Else'否则进行删除文件操作

'弹出对话框,确认是否一定删除,如果选择“是”,则删除,否则不删除

IfMessageBox.Show("确定要删除文件:"&FileName()&"?","提示",_MessageBoxButtons.YesNo,MessageBoxIcon.Asterisk)=_Windows.Forms.DialogResult.YesThenTry

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

CatchexAsException'捕获删除文件时的异常

MessageBox.Show("删除文件错误:"&ex.Message,"提示")EndTry

txtFilename.Text=""'清空文件名文本框内容

MessageBox.Show("已经删除文件:"&strFileName,"提示")'提示删除成功

EndIfEndIfEndSub59运行程序,先选择文件,单击删除按钮,弹出如图7-11所示对话框,如果单击“是”,则删除选择的文件。图7-11删除文件提示对话框607.1.8拷贝文件通过My.Computer.FileSystem.CopyFile实现把指定文件拷贝到目标目录。语句格式为:My.Computer.FileSystem.CopyFile(strFileName,dstfilename,overwrite)把文件strFileName拷贝到目标dstfilename目录或文件,如果overwrite为True,且目标文件存在,则不覆盖目标文件,否则覆盖目标文件。61例7.9拷贝选定的文件。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnCopyFile”,Text为“拷贝”。⑵双击“拷贝”按钮,在代码编辑器中添加Click事件响应的代码:62

PrivateSubbtnCopyFile_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnCopyFile.ClickDimstrFileNameAsString=FileName()'读取选择的文件名

IfstrFileNameIsNothingThen'如果文件名为空

ExitSub'退出过程

Else'否则进行拷贝文件操作

DimdstfilenameAsString=GetDestFilename()'得到目标文件的名字

IfNot(dstfilenameIsNothing)Then'如果目标文件名非空

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

MessageBox.Show("拷贝文件错误:"&ex.Message,"提示")EndTry'提示拷贝成功MessageBox.Show("已经拷贝文件"&strFileName&"到"&dstfilename,"提示")EndIfEndIfEndSub63提示:使用My.Computer.FileSystem.MoveFile实现移动文件,其操作和My.Computer.FileSystem.CopyFile

基本相同。移动文件是只将源文件移动到指定的目录,执行移动操作后在原目录源文件将不再存在;拷贝文件操作是指将源文件的一个备份拷贝到指定的目录,执行拷贝操作后原目录中的源文件还存在。647.1.9文件信息通过My.Computer.FileSystem.GetFileInfo获取指定文件的FileInfo对象,例如:DiminfoFileAsSystem.IO.FileInfo=My.Computer.FileSystem.GetFileInfo(file)通过infoFile

对象可以对文件进行各种操作,并获取文件的一些属性。例7.10显示选定文件的信息。在例7.1中,选择TabControl控件中文件操作演示选项,继续上一节的操作添加:⑴Button控件,Name为“btnFileInfo”,Text为“文件信息”。⑵双击文件信息按钮,在代码编辑器中添加Click事件响应的代码:65

PrivateSubbtnFileInfo_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnFileInfo.ClickDimstrFileNameAsString=FileName()'读取选择的文件名

IfstrFileNameIsNothingThen'如果文件名为空

ExitSub'退出过程

Else'否则进行显示文件信息操作

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

ShowText("",True)'清空输出框内容

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运行程序,先选择文件,单击文件信息按钮,显示结果如图7-12所示。图7-12显示文件信息677.2目录操作在前面介绍的文件操作中,通过My.Computer.FileSystem.GetParentPath(filename)、infoFile.DirectoryName()等可以获取文件所在目录的信息,下面主要介绍选择目录对话框操作和读取目录中的子目录列表、文件列表操作。687.2.1FolderBrowserDialog通过FolderBrowserDialog类创建选择目录对话框,提示用户选择目录。例7.11通过FolderBrowserDialog对话框选择目录。在例7.1中,选择TabControl控件中目录操作演示选项,添加:⑴Label控件,Text为“目录名:”。⑵TextBox控件,Name为“txtDirName”。⑶FolderBrowserDialog控件,Name为“objOpenDir。⑷Button控件,Name为“btnBrowseDir”,Text为“浏览”。⑸双击“浏览”按钮,在代码编辑器中添加Click事件响应的代码:69

PrivateSubbtnBrowseDir_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnBrowseDir.Click'设置打开目录对话框属性

objOpenDir.Description="请选择一个目录"'默认的根目录为“我的文档”

objOpenDir.RootFolder=Environment.SpecialFolder.MyDocuments

objOpenDir.ShowNewFolderButton=False'不显示“新建目录”按钮

'如果选择目录时单击“确定”

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

txtDirName.Text=objOpenDir.SelectedPath()'显示选择的目录名

EndIfEndSub70运行程序,选择目录操作演示选项,单击浏览按钮,弹出如图7-13所示对话框,单击“确定”,选择目录,如图7-14所示。图7-13选择目录对话框71图7-14选择文件执行结果72提示:Environment.SpecialFolder可以指定一些常用的特殊目录,如:73CookiesInternetCookie的存储目录。Desktop桌面目录。Favorites用作用户收藏夹项的存储目录。

History用作Internet历史记录项的存储目录。

InternetCache用作Internet临时文件的存储目录。

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控件中目录操作演示选项,添加:⑴Button控件,Name为“btnSubDirList”,Text为“子目录列表”。⑵双击“子目录列表”按钮,在代码编辑器中添加Click事件响应的代码:76

PrivateSubbtnSubDirList_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnSubDirList.ClickDimstrDirAsString=txtDirName.Text'读取选择的目录名

IfString.IsNullOrEmpty(strDir)Then

MessageBox.Show("请先选择一个目录名!","提示")Else

ShowText("",True)'清空输出框内容

TryForEachstrDAsStringInMy.Computer.FileSystem.GetDirectories(strDir)

ShowText(strD&vbCrLf)'显示子目录列表

NextCatchexAsException

MessageBox.Show("读取子目录列表错误:"&ex.Message,"提示")EndTryEndIfEndSub77运行程序,选择目录操作演示选项,选择目录,单击子目录列表按钮,结果如图7-15所示。图7-15子目录列表执行结果787.2.3显示目录中文件列表获取指定目录strDir中文件录列表的语句为:My.Computer.FileSystem.GetFiles(strDir)例7.13列出指定目录中的文件录信息。在例7.1中,选择TabControl控件中目录操作演示选项,添加:⑴Button控件,Name为“btnFilesList”,Text为“文件列表”。⑵双击“文件列表”按钮,在代码编辑器中添加Click事件响应的代码:79

PrivateSubbtnFilesList_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnFilesList.ClickDimstrDirAsString=txtDirName.Text'读取选择的目录名

IfString.IsNullOrEmpty(strDir)Then

MessageBox.Show("请先选择一个目录名!","提示")Else

ShowText("",True)'清空输出框内容

TryForEachstrFileAsStringInMy.Computer.FileSystem.GetFiles(strDir)

ShowText(strFile&vbCrLf)NextCatchexAsException

MessageBox.Show("读取文件列表错误:"&ex.Message,"提示")EndTryEndIfEndSub80运行程序,选择目录操作演示选项,选择目录,单击子目录列表按钮,结果如图7-16所示。图7-16文件列表执行结果817.3键盘操作My.Computer.Keyboard和My.Computer.Mouse对象提供了对系统键盘和鼠标的访问功能,如获取键盘的当前状态、发送按键、检测系统鼠标的设置信息等。827.3.1检测按键状态通过My.Computer.Keyboard对象下例属性可以获取键盘的当前状态:83CapsLock检测是否打开了CapsLockNumLock检测是否打开了NumLockScrollLock检测是否打开了ScrollLockShiftKeyDown按下Shift键返回True,否则返回FalseAltKeyDown按下Alt键返回True,否则返回FalseCtrlKeyDown按下Ctrl键返回True,否则返回False84例7.14显示键盘的当前状态。在例7.1中,选择TabControl控件中键盘操作演示选项,添加:⑴Button控件,Name为“btnKeyStatus”,Text为“按键状态”。⑵双击“按键状态”按钮,在代码编辑器中添加Click事件响应的代码: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运行程序,选择键盘操作演示选项,如果按住Shift和Ctrl键,单击按键状态按钮,则输出结果如图7-17所示。图7-17按键状态检查877.3.2发送按键通过My.Computer.Keyboard对象的SendKeys方法向活动窗口发送一个或多个击键,如同在键盘上输入一样。其语句格式为:My.Computer.Keyboard.SendKeys(keys,wait)Keys是要发送的击键内容,wait是Boolean类型,用于指定是否等待击键处理完毕,然后再继续运行应用程序,默认为True。如果要发送组合Ctrl键,需要在按键前加“^”;发送组合Alt键,需要在按键前加“%”;发送组合Shift键,需要在按键前加“+”。其它一些特殊按键及其代码如表7-2所示。88按键按键代码Backspace{BACKSPACE}或{BS}Break{BREAK}CapsLock{CAPSLOCK}Clear{CLEAR}Delete{DELETE}或{DEL}向下键{DOWN}End{END}Enter(数字键盘){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的启动、关闭和内容输入。在例7.1中,选择TabControl控件中键盘操作演示选项,主要操作是,先打开Notepad.exe程序,发送一些文本内容到Notepad中,然后选择发送的内容,并通过Ctrl+C拷贝内容到系统剪切板,关闭Notepad程序,最后在输出框输出剪切板中的内容。为此,需要添加:⑴Button控件,Name为“btnSendKeys”,Text为“发送按键”。⑵双击“发送按键”按钮,在代码编辑器中添加Click事件响应的代码:90

PrivateSubbtnSendKeys_Click(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesbtnSendKeys.ClickDimProcIDAsInteger'启动notepad并返回进程号

ProcID=Shell("notepad.exe",AppWinStyle.NormalFocus)'激活该进程

AppActivate(ProcID)'向启动的notepad发送按键

DimstrInputAsString="欢迎使用《VisualBasic2005程序设计》!"&vbCrLfForEachstrAsStringInstrInput

My.Computer.Keyboard.SendKeys(str)Next91

My.Computer.Keyboard.SendKeys("^a")'发送键Ctrl+C

拷贝选择的内容到系统剪贴板

My.Computer.Keyboard.SendKeys("^c")'发送键Alt+F4关闭notepadMy.Computer.Keyboard.SendKeys("%{f4}")'发送键n,不保存输入的内容

My.Computer.Keyboard.SendKeys("%n")'读取剪贴板中的内容,通过输出文本框输出

ShowText(My.Computer.Clipboard.GetText(),True)EndSub92运行程序,选择键盘操作演示选项,单击“发送按键”按钮,则看到Notepad程序启动,同时自动输入一些按键内容,最后Notepad程序退出,演示程序输出结果如图7-18所示,其中输出文本框中的内容是从Notepad拷贝到剪切板中,再粘贴到输出文本框。93图7-18发送按键执行结果94提示:Shell("notepad.exe",AppWinStyle.NormalFocus):表示运行一个可执行程序notepad.exe,由于该程序仍然在运行,则返回一个包含该程序的进程ID的整数。AppWinStyle.NormalFocus表示notepad.exe程序窗口具有焦点,且窗口大小和位置为默认值。AppActivate(ProcID):激活进程号为ProcID的已经运行的应用程序。My.Computer.Clipboard.GetText():读取剪切板中的文本内容。957.4网络操作使用VisualBasic开发具有网络功能的应用程序时,一般需要使用WinSock控件,但这个控件使用比较复杂。为此,VisualBasic2005通过My.Computer.Network对象封装了一些常用的网络操作属性和方法:⑴检测本地主机网络的可用情况:基本格式:My.Computer.Network.IsAvailable(),返回True表示本地主机网络可用,False表示不可用。96⑵确定远程主机是否可用:基本格式:Ping(RemoteHostName或IPAddress,timeout),返回True表示远程主机可用,False表示不可用。其中远程主机使用域名地址(如)或IP地址(如)标识,timeout连接目标的时间阈值(单位为毫秒),默认值为500。注意:远程主机的防火墙如果过滤ICMP协议,则有可能不能正确探测远程主机的可用情况。97⑶从网站下载文件:基本格式:DownloadFile(address,destinationFileName),远程文件address为URL格式,destinationFileName为保存到本地主机的目录及文件名。⑷上传文件到远程网站:基本格式:UploadFile(sourceFileName,address),把本地主机中的文件sourceFileName上传到远程网站address。98例7.16实时监控指定的远程主机是否可用。下面演示实时确定远程主机是否可用的操作。分析:为了实时确定远程主机是否可用,需要每隔一定的时间,使用Ping探测远程主机是否可用,为此,需要使用Timer控件,Timer控件能够每隔指定的时间触发事件。在例7.1中,选择TabControl控件中网络操作演示选项,添加:⑴Label控件,Text为“输入目标地址:”。⑵TextBox控件,Name为“txtDestAddress”。⑶Timer控件,Name为“TimerPing”,Interval为“10000”。⑷双击“TimerPing”,在代码编辑器中添加Timer控件Tick事件响应代码:99

PrivateSubTimerPing_Tick(ByValsenderAsSystem.Object,_

ByValeAsSystem.EventArgs)HandlesTimerPing.Tick'判断输入的目的地址是否为空

IfString.IsNullOrEmpty(txtDestAddress.Text)Then

ShowText("请输入目标地址!",True)EndIf

DimstrDestAsString=txtDestAddress.Text'读取目标地址

DimstrTimeAsString=My.Computer.Clock.LocalTime.ToString()'获取当前时间

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论