文件夹与文件的选取
前提:再弄文件夹的选取的时候可以根据加载驱动器的方法,实现联动,但是不适用啊,还不美观。文件的选取那个普遍好百度出来,但是,需要适当修改。
言归正传:
文件夹的选择<1><2>两种方法哦!
<1>
添加模块
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const BIF_DONTGOBELOWDOMAIN = 2
Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (LpBrowseInfo As BROWSEINFO) As Long
Public Declare Function SHGetPathFromIDlist Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Type BROWSEINFO
hwndOwner As Long
pidlroot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfncallback As Long
lparam As Long
iImage As Long
End Type
Public Function GetFolder(ByVal hWnd As Long, Optional Title As String) As String
Dim bi As BROWSEINFO
Dim pidl As Long
Dim folder As String
folder = Space(255)
If IsNumeric(hWnd) Then
bi.hwndOwner = hWnd
bi.ulFlags = BIF_RETURNONLYFSDIRS
bi.pidlroot = 0
If Title <> "" Then
bi.lpszTitle = Title & Chr$(0)
Else
bi.lpszTitle = "选择目录" & Chr$(0)
End If
End If
pidl = SHBrowseForFolder(bi)
If SHGetPathFromIDlist(ByVal pidl, ByVal folder) Then
GetFolder = Left(folder, InStr(folder, Chr$(0)) - 1)
Else
GetFolder = ""
End If
End Function
在窗体上
Private Sub Command1_Click()
Dim str
str = GetFolder(Me.hWnd, "浏览文件夹")
If str <> "" Then
Text1.Text = str
' Combo1.AddItem (str)
End If
End Sub
<2>
添加引用
Microsoft Shell Controls And Automation
'按钮的点击事件
Private Sub btnOk_Click()
Dim MyShell As New Shell
Dim MyFolder As Folder
Set myforlder = MyShell.BrowseForFolder(0, "请选择文件:", 0)
If myforlder Is Nothing Then End
Text1.Text = myforlder.Self.Path
End Sub
文件的选取就简单了
添加一个CommonDialog控件
Private Sub btnLook_Click()
With CommonDialog
.Filter = "所有文件夹"
'对文件类型进行选取
'.Filter="txt文件夹(txt)|txt"
.ShowOpen
Text1.Text = .FileName
End With
End Sub
之后用到的路径就是CommonDialog.FileName了
后续:刚写博客,什么都没有,凑合着看吧,没贴在vb运行结果,但是都是自己运行好的复制下来的,恩恩,情况基本是这样。
大菜鸟一个,有错误还望及时指正,以免误人子弟。