




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章9探索Visual Basic 2005程序语言新功能声明:本章的解说与程序码范例都是根据Visual Basic 2005 Express Edition Beta 2所撰写的,任何信息在最终的发行版本中都可能会有所变动,特此声明之。另外,本章的程序范例单独存放于范例光盘内之Ch9目录下的Ch9项目中。为了让大家先睹为快,微软公司特别开放Visual Basic 2005 Express Edition Beta 2让大家下载。基本上,Visual Basic 2005的各项新功能已经大致底定,在RTM版发行前不致有太大的变更。即使有所不同,也绝对是大同小异。不过仍然建议大家不要在实际
2、执行日常工作的电脑上安装Beta版,还是在Microsoft Virtual PC映像上执行比较安全。Visual Basic 2005的程序语言变革重点包括My、XML注解及泛型。一些能够弥补逻辑缺口的新程序语言语句,包括:Using、Continue与TryCast,以及 Global 关键字。另外还有一些结构化的改良,包括属性存取子存取范围的变更、自定义事件存取子、部分型别类型以及应用程序层级事件。运算符多载、转换运算符与IsNot运算符也都是全新加入的。其他实用的变革还包括:Unsigned型别类型、菜单默认实例、编译器警告与明确数组界限。我想大家现在一定迫不及待想要深入了解Visua
3、l Basic 2005在程序语言方面的强化,现在就让我们一起开始学习吧!本章将讨论下列主题:n 从My谈起n My.Application对象n My.Computer对象n 对象n 对象n 对象n 对象n 对象n 对象n 对象n 对象n 对象n 对象n 对象n My.Forms对象n My.Log对象n My.Request对象n My.Response对象n My.Resources对象n My.Settings对象n My.User对象n My.WebServices对象n Continue语句n IsNot运算符n Using语句n 明确指定数组的0下限n 声明一个拥有混合存取范围的
4、属性n Unsigned型别类型n Global关键字n TryCast关键字n 运算符多载n 自定义事件n 应用程序层级事件9-1 从My谈起.NET Framework既广且深,其功能之强大与完整是任谁也不能否认的,然而其众多命名空间中大量数目的类,却常常让新手不知从何下手,总是必须花上一段时间才能熟悉他们所需之类的位置。这样的过程,其实让人觉得有点气馁。为了解决学习上的问题,并具体提升开发人员的生产力,Visual Basic 2005提供了一项非常重要的新功能,它就是My。My 提供了常用 .NET Framework 类与函数的进入点,让常用的功能唾手可得,并减少您必须撰写的程序码行
5、数。My的最顶层成员会被暴露成对象。每一个对象在运作上就好比是一个命名空间或是拥有共用成员的类,并且会公开一组相关联的成员。说穿了,My提供一条捷径来让您存取信息以及与应用程序及其执行阶段环境相关联的默认对象实例。My的最顶层成员包括下列各项:n Application n Computer n Usern Formsn Webservicesn Resources n Settings My到底有多好用呢?我们就通过一些简单的范例来展现其便利之处。首先,假设我们要在Visual Basic 2005中播放一个音频文件,欲达此目的,您不需要像过去一样去使用DirectX或Win32 API调用
6、,您只需撰写下面这一条语句即可:又例如,假设您要播放一个系统音频,可以撰写如下所示的语句:再举一个例子,假设您要去验证与指定远程主机的连线性,可以采用下列写法: MessageBox.Show("微软的网站可以使用。") End IfEnd If从上面这三个简例可以看出,显然My不仅能够使程序码更加精简,更重要的是,这是一种非常直观的写法,让程序设计师非常容易去联想与发掘所需的功能。谈到这里,相信大家现在对My已经产生不少好感,既然如此,我们就更进一步去学习My的各大成员吧!9-2 My.Application对象由于My.Application对象提供了与目前应用程序相关
7、的属性、事件与方法,因此通过My.Application对象,我们可以轻易地去存取与目前应用程序相关的各项信息。比方说,使用下面这一条语句即可显示出应用程序所采用的验证模式:大家必须了解,My.Application对象所公开的属性都是与目前应用程序或DLL相关的信息,您不能使用My.Application对象去变更任何系统层级的信息。此外,My.Application对象的成员能否使用也会因为应用程序的类型是Windows Form应用程序或主控台应用程序而有所不同。特别值得一提的是,在My.Application对象之下还继续公开了下列两个对象:q 对象对象提供了用来取得应用程序相关信息的
8、属性,比方说,版本号码、描述、载入的组件等等。对象所公开的某些属性会返回应用程序的组件信息。如果您想要设定应用程序之组件的相关信息,必须使用图9-1所示的“组件信息”对话框。对象的功能性与类有些类似,但是其范围仅限于快速存取最常用的属性。其他比如LoadedAssemblies属性则会提供应用程序目前的状态。q 对象对象所提供的一个属性(TraceSource)与两个方法(WriteEntry与WriteException)能够帮助您将事件与异常信息写入至应用程序的记录聆听监听项(Log Listeners)。对象提供一个非常直接的进入点来让您存取 .NET Framework的记录服务。Wr
9、iteEntry与WriteException方法会将讯息写入至应用程序的记录聆听监听项。这些聆听监听项是在machine.config中设定的,但是其运作行为可以被应用程序的配置文件来加以覆写。请大家注意,对象仅适用于Windows用户端应用程序。对于ASP.NET应用程序而言,请使用My.Log对象。: 程序范例图9-2所示者是程序范例DemoVB2005_1.vb的执行画面,它示范如何使用My.Application对象来取得应用程序的相关信息。兹将程序码列示如下:图9-1图9-2Private Sub btnGetAppCmdLineArgs_Click(_ ByVal sender
10、As System.Object, ByVal e As System.EventArgs) _ Handles btnGetAppInfo.Click Dim sb As StringBuilder = New StringBuilder sb.Append("应用程序的标题:") sb.AppendLine() sb.Append("描述:") sb.AppendLine() sb.Append("产品名称:") sb.AppendLine() sb.Append("公司名称:") sb.AppendLine(
11、) sb.Append("著作权:") sb.AppendLine() sb.Append("商标:") sb.AppendLine() sb.Append("版本:") sb.AppendLine() sb.AppendLine("命令行光标:") For Each s As String In sb.AppendLine(s) Next sb.Append("验证模式:") sb.AppendLine() sb.Append("文化特性名称:") sb.AppendLin
12、e() sb.Append("应用程序组件文件的名称:") sb.AppendLine() sb.Append("应用程序储存位置:") sb.AppendLine() sb.Append("对应至进程内容的实际内存数量:") sb.AppendLine() txtResult.AppendText(sb.ToString)End Sub9-3 My.Computer对象My.Computer对象能够返回应用程序所部署之电脑的相关信息,比如音频、时钟、键盘、文件系统等等。特别值得一提的是,在My.Computer对象之下还继续公开了数
13、个对象,接下来,我们要一一讨论这些对象。附注:您可以使用属性来取得电脑名称。对象对象提供了下列三个非常便利的方法来让我们播放音频:q Play方法Play方法能够播放一个 .wav 声音文件,它拥有下列四个多载版本:Ø Play(ByVal location As String)Ø Play(ByVal location As String, ByVal playMode As AudioPlayMode)Ø Play(ByVal data As Byte(),ByVal playMode As AudioPlayMode)Ø Play(ByVal st
14、ream As , _ ByVal playMode As AudioPlayMode)参数PlayMode型别类型是列举型别类型AudioPlayMode,它用来决定播放模式,其成员与说明如表9-1所示。q PlaySystemSound方法借助于PlaySystemSound方法,我们可以非常容易播放某一个系统声音。您传递给PlaySystemSound方法的参数必须是类的下列共用成员之一。表9-1播放模式说明AudioPlayMode.Background以背景方式播放声音,此举使得调用程序码能够继续执行。AudioPlayMode.BackgroundLoop以背景方式播放声音直到My
15、.Computer.Autdio.Stop方法被调用为止,同样的,此播放模式能够让调用程序码继续执行。AudioPlayMode.WaitToComplete播放声音并等到播放完毕之后,调用程序码才会继续执行。AsteriskBeepExclamationHandQuestionq Stop方法如果您要停止播放先前使用Play方法所播放的背景声音,请调用Stop方法。: 程序范例图9-3是程序范例DemoVB2005_2.vb的执行画面,它示范如何使用对象来播放声音。设计技巧说明如下:图9-3q 我们必须替菜单的Load事件过程撰写下列程序码,以便以AudioPlayMode列枚举型别类型的常
16、量名称字符串数组作为下拉式清单方块列表框cboAudioPlayMode的资料数据来源:Private Sub DemoVB2005_2_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load cboAudioPlayMode.DataSource = _ cboAudioPlayMode.SelectedIndex = 1End Subq 当用户单击【播放声音】按钮,就会执行下列程序码以便以用户所指定的播放模式来播放所选取的声音文件:Private Sub btnPlaySo
17、und_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnPlaySound.Click Try ' 决定声音的播放模式。 ' 开始播放声音。 Catch ex As Exception MessageBox.Show(ex.Message) End TryEnd Subq 当用户单击【停止播放】按钮,就会执行下列程序码以便停止播放目前正在以背景方式播放的声音:Private Sub btnStopPlay_Click(ByVal sender As System.Obj
18、ect, _ ByVal e As System.EventArgs) Handles btnStopPlay.Click Try Catch ex As Exception MessageBox.Show(ex.Message) End TryEnd Sub对象对象最主要的用途就是让开发人员更容易去使用剪贴簿,您可以使用对象的各个方法(如表9-2所列)来完成剪贴簿的处理操作。我们已经在第4章的“4-54剪贴簿的资料数据撷取与存入”一节中详细介绍过剪贴簿,于此就不再浪费篇幅说明。表9-2My.Computer.Clipboard对象的方法方法说明Clear清除剪贴簿。 ContainsAudi
19、o判断剪贴簿是否内含音频资料数据。 ContainsData判断剪贴簿是否内含所指定之自定义格式的资料数据。 ContainsFileDropList判断剪贴簿是否内含一个FileDropList。比方说,以下的程序码会判断剪贴簿是否内含一个FileDropList,如果确实存在的话,则将其集合中的路径字符串一一添加至清单方块列表框中:If My.Computer.Clipboard.ContainsFileDropList Then Dim filelist As _ System.Collections.Specialized.StringCollection filelist = My.
20、Computer.Clipboard.GetFileDropList() For Each filePath As String In filelist lstFiles.Items.Add(filePath) NextEnd IfContainsImage判断剪贴簿是否内含一个影像。比方说,以下的程序码会判断剪贴簿是否存在一个影像,如果确实存在的话,就取得影像并将其显示在PictureBox控件中:If My.Computer.Clipboard.ContainsImage() Then Dim grabpicture As System.Drawing.Image grabpicture
21、= My.Computer.Clipboard.GetImage() PictureBox1.Image = grabpicture End If续表My.Computer.Clipboard对象的方法ContainsText判断剪贴簿是否内含文本或所指定格式的文本。以下面的程序码而言,它会判断剪贴簿中是否存在HTML文本,如果确实存在的话,就从剪贴簿中将其读取出来: If My.Computer.Clipboard.ContainsText _ (System.Windows.Forms.TextDataFormat.Html) Then Dim clipText As String = _
22、 My.Computer.Clipboard.GetText()End IfGetAudioStream从剪贴簿中返回一个音频资料数据流。以下的程序码示范如何从剪贴簿中提取出一个音频资料数据流并播放它:If My.Computer.Clipboard.ContainsAudio Then Dim song As System.IO.Stream song = My.Computer.Clipboard.GetAudioStream My.Computer.Audio.Play( _ song, AudioPlayMode.WaitToComplete) End IfGetData从剪贴簿中返回
23、与指定格式相关的资料数据。 GetDataObject它会撷取目前在剪贴簿中的资料数据并将其以IDataObject返回。 GetFileDropList提取出剪贴簿中的FileDropList。 GetImage提取出剪贴簿中的影像。 GetText提取出剪贴簿中的文本。例如:Dim textOnClipboard As String = _ My.Computer.Clipboard.GetText()续表My.Computer.Clipboard对象的方法SetAudio将音频资料数据写入剪贴簿。以下面的程序码而言,它会建立一个字节组数组musicReader,接着将Sound1.wav
24、读入其中,然后将其写入剪贴簿:Dim musicReader As Byte()musicReader = _ My.Computer.FileSystem.ReadAllBytes("Sound1.wav")My.Computer.Clipboard.SetAudio(musicReader)SetData以指定的自定义格式将资料数据写入剪贴簿。 SetDataObject将一个DataObject型别类型的资料数据对象写入剪贴簿。 SetFileDropList将一个FileDropList写入剪贴簿。以下的程序码会取得My Documents文件夹当中的文件名称集合,
25、接着将它们转换成一个FileDropList,然后将它写入剪贴簿:Dim list As _ System.Collections.ObjectModel.ReadOnlyCollection( _ Of String)list = My.Computer.FileSystem.GetFiles _ (My.Computer.FileSystem.SpecialDirectories.MyDocuments)Dim listReader As New _ System.Collections.Specialized.StringCollectionFor Each item As String
26、 In list listReader.Add(item)NextMy.Computer.Clipboard.SetFileDropList(listReader)SetImage将一个影像写入剪贴簿。 SetText将文本写入剪贴簿。对象通过对象的下列属性,我们可以非常容易地去取得与时间相关的信息:q GmtTime属性会以格林尼治标准时间(Greenwich Mean Time,GMT)来返回本机电脑上当地的目前日期与时间。属性与属性是完全相同的。q LocalTime属性会返回本机电脑上当地的目前日期与时间。属性与System.DateTime. Now属性是完全相同的。q TickCo
27、unt属性会返回系统启动后经过的毫秒数。如果您要根据应用程序执行时间的长短来控制其运作行为,TickCount属性就显得非常好用。TickCount属性的值衍生自系统计时器,并且被储存成32位带正负号的整数,因此如果系统持续执行24.9天,耗用的时间会重新从零计算起。TickCount属性只有当系统在运作时才会递增,如果电脑进入特定的省电模式(例如:待机或休眠状态),它将会停止递增。TickCount属性与电脑的时钟设定无关。属性与属性是完全相同的。对象在Visual Basic 2005中要进行文件系统的处理操作将是前所未有地简易,此乃因为对象提供了非常直接、无界限、易于发现、且易于使用的方
28、式来执行常用的文件系统操作,诸如复制、删除、移动以及更名文件与文件夹,或是读取和写入文件,全都可以通过对象来轻易完成。为了让大家真正了解对象的好处,接下来我们将一一说明如何使用对象去轻易完成各项的文件与文件夹处理操作。9-7.1 取得磁盘信息您可以使用对象的下列成员来取得磁盘信息:q 属性会返回一个内含您电脑中所有逻辑磁盘之对象的只读集合。如此一来,您可以针对此只读集合中的每一个对象进行处理,以便取得每一个逻辑磁盘的详细信息。q 如果您只是想要取得某一个逻辑磁盘的对象,请使用方法。: 程序范例1图9-4所示者程序范例DemoVB2005_3.vb的执行画面,它示范如何结合使用属性与对象来取得电
29、脑中所有已就绪之逻辑磁盘的相关信息。程序码如下所列,请特别注意我们如何使用对象的IsReady属性来判断磁盘是否已经就绪:图9-4' 导入命名空间Imports System.IOImports System.TextPrivate Sub btnGetDriveInfo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetDriveInfo.Click Dim sb As StringBuilder = New StringBuilder Dim getInfo As _
30、Try For Each info As DriveInfo In getInfo ' 判断磁盘装置是否就绪。 If info.IsReady Then sb.Append("磁盘代号:") sb.AppendLine(info.Name) sb.Append("磁盘标签:") sb.AppendLine(info.VolumeLabel) sb.Append("磁盘类型:") sb.AppendLine() sb.Append("磁盘格式:") sb.AppendLine(info.DriveFormat
31、) sb.Append("磁盘大小:") sb.AppendLine() sb.Append("剩余空间:") sb.AppendLine() sb.AppendLine("-") End If Next Catch ex As Exception MessageBox.Show(ex.Message) End Try txtResult.Text = sb.ToStringEnd Sub: 程序范例2图9-5所示者程序范例DemoVB2005_4.vb的执行画面,它允许用户选取电脑上的某一个逻辑磁盘,然后列出该磁盘的相关信息。设计技
32、巧重点说明如下:图9-5q 您必须在菜单的Load事件过程撰写下列程序码,以便将电脑上所有逻辑磁盘的名称添加至下拉式清单方块列表框中:Private Sub DemoVB2005_4_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim sb As StringBuilder = New StringBuilder Dim getInfo As _ For Each info As DriveInfo In getInfo NextEnd Subq 您必须替下拉式清单
33、方块列表框的SelectedIndexChanged事件过程撰写下列程序码,以便当用户选取某一个磁盘之后,就使用方法来根据该磁盘建立一个DriveInfo对象,以便取得该磁盘的相关信息:Private Sub cboDrives_SelectedIndexChanged( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles cboDrives.SelectedIndexChanged txtResult.Clear() Dim sb As StringBuilder = New StringBuilde
34、r ' 判断磁盘装置是否就绪。 If myDrive.IsReady Then sb.Append("磁盘代号:") sb.AppendLine(myDrive.Name) Else MessageBox.Show("磁盘" & myDrive.Name & _ " 尚未就绪,可能是尚未插入磁盘或光盘," & _ "亦或是本装置根本不存在。") End If txtResult.Text = sb.ToStringEnd Sub9-7.2 读取文本文件方法让文本文件的读取操作前所未有
35、地简易,它能够直接读取文本文件的内容并将其以一个字符串返回。例如:Dim myTxtFileReader As String在读取文件的时候还可以指定第二个型别类型为的字节编码参数,如果您要读取一个拥有延伸字节的文件,就需要指定字节编码。比方说,假设您要读取一个内容为UTF32编码的文本文件,可以这样写:Dim myFileReader As StringmyFileReader = _ ("C:Test.txt", _ )方法会将所读取之文本文件的内容以一个字符串返回,但是如果您希望建立一个指向您所要读取之文本文件的StreamReader对象,以便通过StreamRea
36、der对象多样化的方法来读取文本文件的话,请使用方法来打开文本文件。方法会打开文本文件并建立一个StreamReader对象来代表该文本文件。例如:Dim stringReader As StringstringReader = sr.ReadLine()MessageBox.Show("此文本文件的第一行是:" & stringReader)sr.Close()附注:关于如何通过StreamReader对象来读取文本文件的详细说明,请参阅第6章。9-7.3 剖析文本文件正如大家所知道的,文本文件的内容常常并非是单纯的文章,其内容很可能是以特定字节分隔或是固定宽度的
37、字段资料数据,尤其当我们将资料数据库资料数据表的资料数据记录导出成文本文件的时候,更是经常采用此格式。为了帮助大家顺利读取此类的文本文件,Visual Basic 2005特别推出方法,此方法会建立一个TextFieldParser对象,以便提供一条途径来让您轻易且有效率地读取结构化的文本文件。: 程序范例1图9-6所示者是程序范例DemoVB2005_5.vb的执行画面,它示范如何使用方法去打开一个以逗号分隔字段内容的文本文件,以便藉由TextFieldParser对象的辅助来顺利将文本文件之各字段的内容显示在一个DataGridView控件中。兹将程序码列示如下:以逗号分隔之文本文件的内容
38、顺利显示在DataGridView控件中这是一个以逗号分隔的文本文件,请注意,第一行是各字段的标题。图9-6Private Sub btnParseTextFiles_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnParseTextFiles.Click ' 表示文件内容是字节分隔。 ' 定义文本文件的字节分隔符号。 myReader.Delimiters = New String() "," DataGridView1.ColumnHeaders
39、Visible = True ' 设定栏标题样式。 Dim columnHeaderStyle As New DataGridViewCellStyle() columnHeaderStyle.BackColor = Color.Beige columnHeaderStyle.Font = New Font("Verdana", 10, FontStyle.Bold) DataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle Dim currentRow As String() Dim myRow
40、Count As Integer = 1 Dim myColCount As Integer = 0 ' 循环处理文本文件中的所有字段。 While Not myReader.EndOfData Try currentRow = myReader.ReadFields() If myRowCount = 1 Then For Each currentField As String In currentRow ' 动态设定DataGridView控件的字段数目。 DataGridView1.ColumnCount = myColCount + 1 ' 设定DataGrid
41、View控件各栏的标题名称。 DataGridView1.Columns(myColCount).Name = _ currentField myColCount += 1 Next Else End If Catch ex As MalformedLineException MessageBox.Show(ex.Message) End Try myRowCount += 1 End WhileEnd Sub: 程序范例2图9-7所示者是程序范例DemoVB2005_6.vb的执行画面,它示范如何使用方法去打开一个内容为固定字段宽度的文本文件,以便藉由TextFieldParser对象的辅助
42、来顺利将文本文件之各字段的内容显示在一个DataGridView控件中。兹将程序码列示如下:Private Sub btnParseTextFiles_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnParseTextFiles.Click ' 表示文件内容是固定字段宽度。 ' 定义各个字段的宽度。 myReader.SetFieldWidths(5, 10, -1) ' 循环处理文本文件中的所有字段。 While Not myReader.EndOfData
43、Try Catch ex As MalformedLineException MessageBox.Show(ex.Message) End Try End WhileEnd Sub这是一个固定字段宽度的文本文档,请注意,它并未内含字段标题。固定字段宽度的文本文件内容顺利显示在DataGridView控件中图9-79-7.4 写入文本文件方法提供一种最直接的方式来将文本资料数据(或是说字符串)写入文本文件,如下所示者即是一例:"C:Test.txt", "我是章立民", False)如果您所指定的文件并不存在,将会建立该文件。至于是否要覆写文件中既存的文
44、本,则由第三个参数来决定,False表示覆写(此为默认值),True表示添加在既存的内容之后。其实您还可以指定第四个型别类型为System.Text.Encoding的字节编码参数,如果没有指定的话,默认将使用UTF-8。方法虽然直接又便利,但是或许您希望建立一个指向您所要写入资料数据之文本文件的StreamWriter对象,以便通过StreamWriter对象多样化的方法来写入文本文件。欲达此目的,请使用方法来写入文本文件。例如:sw.WriteLine("大家好!")sw.Write("非常感谢大家的支持.")sw.WriteLine("敬
45、请继续给予批评指教")sw.Flush()sw.Close()附注:关于如何通过StreamWriter对象来写入文本文件的详细说明,请参阅第6章。9-7.5 读取二进制文件方法能够读取一个二进制文件并将所读取的内容返回成一个字节组数组。图9-8所示者是程序范例DemoVB2005_7.vb的执行画面,本范例的重点在于,由于方法会直接返回所读取之二进制文件的字节组数组,因此使得程序码更加精简,兹列示如下:图9-8' 根据Byte数组来建立一个MemoryStream对象。Dim buffer As New MemoryStream(myBinaryData)' 将图形
46、文件的二进制资料数据读入一个Image对象中,' 以便将其显示于PictureBox控件中。PictureBox1.Image = Image.FromStream(buffer)9-7.6 写入二进制文件您觉得要将资料数据写入二进制文件很困难且繁琐吗?从现在开始,一切将变得如此简易,因为方法能够直接将一个字节组数组中的资料数据写入一个文件中。如果所指定的文件并不存在,它还会自动建立该文件。以下面的程序码而言,表示将从图文件Test1.jpg读取所得的影像资料数据写入图文件Test2.jpg中:9-7.7 取得目录信息通过对象的下列属性与方法,您将能够以更直观且快速的方式来取得磁盘中的
47、目录信息:q CurrentDirectory属性能够用来取得或设定应用程序的目前目录。q 方法能够判断所指定的目录是否存在。一般来说,当我们针对特定目录执行相关处理之前,都会先判断该目录是否存在,例如: End Ifq CombinePath方法是一个非常实用的方法,它能够将两个路径组合起来,接着加入遗漏的斜线字符或去除额外的斜线字符之后,返回一个合理的路径。这次的智慧型功能,将可替程序设计师解决不少麻烦。举例来说,以下面的程序码而言,CombinePath方法将会替目录路径与文件名称之间加上一个斜线而返回路径C:My DocumentsMy PicturesPicture.jpg: (&q
48、uot;C:My DocumentsMy Pictures", "Picture.jpg")又以下面的程序码而言,CombinePath方法会根据第二个路径开头的 . 而上移一层目录之后再返回组合后的路径C:Dir1Dir2Dir4Dir5File.txt:Dim myFullPath As String ("C:Dir1Dir2Dir3", ".Dir4Dir5File.txt")q 方法会取得指定目录中之所有子目录的路径名称然后将它们以一个只读的字符串集合返回。q 方法会返回您所指定之路径的对象。q 方法会返回您所指定之
49、路径的父路径。以下面的程序码而言,将会返回路径C:TempData:Dim strPath As String9-7.8 取得文件信息通过对象的下列方法,您将可以快速取得文件的相关信息:q 方法能够判断所指定的文件是否存在。例如:If Then MessageBox.Show("文件存在")Else MessageBox.Show("文件不存在")End Ifq 方法会返回您所指定之文件的对象。q 方法是一个非常实用的方法,它会返回您所指定之路径中的文件名称。比方说,以下面的程序码而言,它会返回Test.txt:Dim MyFileName As Str
50、ingq 方法会取得您所指定之目录中的所有文件名称,然后将它们以一个只读的字符串集合返回。q 是一个非常重要、方便且又强大的方法,它能够在指定的目录中找出文件内容中内含特定文本的文件,然后将这些文件名称以一个只读的字符串集合返回。您还可以决定是否要区分大小写,指定搜寻的范围,甚至可以指定所要搜寻的文件类型。方法拥有下列两个多载版本:FindInFiles( _ ByVal directory As String, _ ByVal containsText As String, _ ByVal ignoreCase As Boolean, _ ByVal searchType As Search
51、OptionFindInFiles( _ ByVal directory As String, _ ByVal containsText As String, _ ByVal ignoreCase As Boolean, _ ByVal searchType As SearchOption, _ ByVal fileWildCards其中参数directory用来指定您所要搜寻的目录;参数containsText用来指定您所要搜寻的文本;参数ignoreCase用来决定是否要区分大小写;参数searchType用来指定搜寻的范围,如果您只是要搜寻所指定的目录但是不搜寻该目录之下的子目录,请将参
52、数searchType设定成SearchOption. SearchTopLevelOnly,但是如果您希望搜寻所指定的目录以及该目录之下所有的子目录,请将searchType设定成SearchOption. SearchAllSubDirectories;最后一个参数fileWildCards是用来指定搜寻的文件类型。q My.Computer.FileSystem.GetTempFileName方法会在磁盘上建立一个惟一名称且零字节大小的临时文件,并返回该临时文件的完整路径。: 程序范例图9-9所示者是程序范例DemoVB2005_8.vb的执行画面,它示范如何使用方法于指定的磁盘目录中去
53、搜寻出内含您所指定之文本的文件。相关程序码撰写于【开始搜寻】按钮的Click事件过程中,列示如下:图9-9Private Sub btnSearch_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSearch.Click If txtTarget.Text = String.Empty Then MessageBox.Show("您必须输入所要搜寻的文本。") txtTarget.Focus() Exit Sub End If Dim frmStatusMessa
54、ge As New frmStatus frmStatusMessage.Show("搜寻中.请稍候.") mySearchDirectory, _ chkIgnoreCase.Checked, _ mySearchOption) frmStatusMessage.Close() If list.Count > 0 Then For Each name As String In list Next Else MessageBox.Show("找不到有任何文件内含您所指定的文本。") End IfEnd Sub9-7.9 目录维护操作通过对象的下列方
55、法,您将可以快速完成各种目录维护操作:q 方法能够让您快速完成目录的建立操作。q 方法能够让您快速完成目录的删除操作,它拥有下列三个多载版本:DeleteDirectory( _ ByVal directory As String, _ ByVal onDirectoryNotEmpty As DeleteDirectoryOption)DeleteDirectory( _ ByVal directory As String, _ ByVal showUI As UIOption, _ ByVal recycle As RecycleOption)DeleteDirectory( _ ByVal directory As String, _ ByVal showUI As UIOption
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省十堰市2024-2025学年高三下学期四月调研考试数学试题
- 广西玉林市本年度(2025)小学一年级数学部编版随堂测试((上下)学期)试卷及答案
- 新疆吐鲁番地区本年度(2025)小学一年级数学统编版课后作业((上下)学期)试卷及答案
- 大学生如何制定合理有效的学习计划书
- 2025春季学期国家开放大学专科《建筑工程计量与计价》一平台在线形考(作业1至4)试题及答案
- 人工智能核心算法模拟题(附参考答案)
- 职业技术学校软件与信息服务专业人才培养方案(2024年)
- 2025年山西省晋中市平遥县中考一模历史试题(原卷版+解析版)
- 河南省许昌市部分校2024-2025学年高一下学期4月期中考试数学试题(原卷版+解析版)
- 畜牧养殖技术培训与职业技能提升项目的开展考核试卷
- 智能化屠宰场建设方案设计
- 学校结核病疫情调查与应急处置1
- 老人接种疫苗科普知识讲座
- 科学方法和实验设计
- 经肛型肠梗阻导管
- 成圈机操作规程
- 加油站安全生产责任制
- 万千心理情绪障碍跨诊断治疗的统一方案:治疗师指南
- 道路建设项目实施方案范文(五篇)
- 2023年韶关市始兴县事业单位真题
- 矿井有计划停电停风通风安全技术措施
评论
0/150
提交评论