如何仅使用通用对话框控件选择文件夹

Gop*_*pal 8 vb6

使用VB6

码.

CommonDialog1.DialogTitle = "Open File"
CommonDialog1.Filter = "*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.Flags = cdlOFNAllowMultiselect + cdlOFNExplorer
CommonDialog1.Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly
CommonDialog1.CancelError = True
On Error Resume Next
CommonDialog1.ShowOpen
If Err Then
    'MsgBox "Select Folder"
    Exit Sub
End If
Run Code Online (Sandbox Code Playgroud)

从上面的代码,我选择一个文件,但我不想选择一个文件,我只想选择该文件夹.如何修改我的代码.

需要vb6代码帮助?

Two*_*ymz 8

已经有一段时间了,因为我必须做任何视觉基础工作,但我认为不是使用通用对话框来获取要打开的文件的名称,您应该使用已经是Windows API一部分的SHBrowseForFolder函数.这是指向描述其用法的页面的链接.

更新(2017年):提供的链接已损坏,但可以在archive.org上查看备份版本


Rob*_*vey 7

要选择文件夹,可以使用Shell和Automation组件.

Private shlShell As Shell32.Shell
Private shlFolder As Shell32.Folder
Private Const BIF_RETURNONLYFSDIRS = &H1

Private Sub Command1_Click()
    If shlShell Is Nothing Then
        Set shlShell = New Shell32.Shell
    End If
    Set shlFolder = shlShell.BrowseForFolder(Me.hWnd, "Select a Directory", BIF_RETURNONLYFSDIRS)
    If Not shlFolder Is Nothing Then
        MsgBox shlFolder.Title
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

您需要添加shell32.dll对项目的引用.使用项目/参考...菜单,然后浏览shell32.dll.

或者您可以像Twotymz建议的那样使用Windows API.