VB 用CommonDialog选择打开多个文件实例
在Visual Basic中,通常用CommonDialog公共对话框来选择磁盘上的文件,在其Flags属性中加上cdlOFNAllowMultiselect风格后,就允许选择多个文件。当只选择一个文件时,其文件名(包含路径)直接返回Filename属性,那么选择多个文件时呢? 如果选择了多个文件,则Filename属性返回值格式为”路径_文件名1_文件名2_…”(_为字符Chr$(0))。举一个例子,如果我们选择C:1.txt文件,那么Filename=”C:1.txt”;而同时选择了C:1.txt和C:2.txt两个文件后,则Filename=”C: 1.txt 2.txt”。我们要获取所选择文件的文件名,就必须对Filename字符串进行分离。 分离的思路大致如下:先得到所选择文件的路径,然后将其从Filename字符串中去除,这样就只剩下了文件名。而这些文件名又有字符Chr$(0)分隔,剩下的就很好办了,即便文件名中有空格(Chr$(32)),也能正确的实现分离。 所以,现在关键的问题是如何获取所选择文件的路径。VB中有一个内建的函数CurDir(),它能返回当前的路径。在CommonDialog中改变路径会产生PathChange事件,这也将同时改变CurDir()函数的值,使其始终指向被选择的路径。因此,我们使用CruDir()函数就能正确得到所选择文件的路径。但要注意,这个操作必须在下次PathChange事件发生之前调用,否则其值会随之而改变。建议在CommonDialog的ShowOpen方法之后立即调用。 同时需要注意的是,用CurDir()函数获取路径时,如果是根目录,则最后一个字符为“”,不是根目录时则没有。例如,如果当前的路径为C:,那么CurDir()=”C:”;而当前路径为C:Pwin95时,CurDir()=”C:Pwin95”,这就需要在程序中加以区别。 下面就是实现的过程。 1. 先新建一个工程 2. 从菜单“工程/添加模块”中添加一个新模块Moudle1,并在模块中输入如下代码: Option Explicit Type DlgFileInfo sPath As String sFile() As String End Type '功能: '参数说明: '函数类型: ‘ 择文件的路径,sFile()返回所选择文件的文件名(不包括路径) '注意事项: Public Function GetDlgFileInfo(strFilename As String) As DlgFileInfo Dim sPath,tmpStr As String Dim sFile() As String Dim iCount As Integer Dim I As Integer
On Error GoTo ErrHandle (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |