非常容易,用API就能完成,以下是我以前收集的部分代码:
'路径选取框(选择文件夹)
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Public Enum DirFlags
BIF_BROWSEFORCOMPUTER = &H1000&
BIF_BROWSEFORPRINTER = &H2000&
BIF_BROWSEINCLUDEFILES = &H4000&
BIF_DONTGOBELOWDOMAIN = &H2&
BIF_EDITBOX = &H10&
BIF_RETURNFSANCESTORS = &H8&
BIF_RETURNONLYFSDIRS = &H1&
BIF_STATUSTEXT = &H4&
BIF_VALIDATE = &H20&
End Enum
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pIdl As Long, ByVal pszPath As String) As Long
Public Function ShowDirBox(ByVal hWnd As Long, Optional ByVal Title As String, Optional DirName As String, Optional ByVal Flags As DirFlags) As String
Dim FileDis As BROWSEINFO, FilePath As String, IntLen As Integer
With FileDis
.hOwner = hWnd
.lpszTitle = Title
.ulFlags = Flags
.pszDisplayName = String(260, 0)
End With
FilePath = String(260, 0)
SHGetPathFromIDList SHBrowseForFolder(FileDis), FilePath
IntLen = InStr(FilePath, vbNullChar)
If IntLen = 0 Then Exit Function
ShowDirBox = Left$(FilePath, IntLen - 1)
IntLen = InStr(FileDis.pszDisplayName, vbNullChar)
If IntLen = 0 Then Exit Function
DirName = Left$(FileDis.pszDisplayName, IntLen - 1)
End Function
'调用以上我写的函数即可
MsgBox ShowDirBox(Me.hWnd, , , BIF_EDITBOX) '具体
掺数自己试试
-----
好像叫通用对话框,好像是第3方控件。