VB如何打开这样的文件夹浏览对话框?

zhuozhuo2011 2013-05-18 02:57:27
...全文
1108 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuozhuo2011 2013-05-23
  • 打赏
  • 举报
回复
引用 12 楼 itakeblue 的回复:
有一个变通的办法,还是使用ms common dialog组件
Private Sub Form_Load()

    With CommonDialog1
        .Flags = cdlOFNPathMustExist
        .Flags = .Flags Or cdlOFNHideReadOnly
        .Flags = .Flags Or cdlOFNNoChangeDir
        .Flags = .Flags Or cdlOFNExplorer
        .DialogTitle = lang_select_folder
        .FileName = "请进入一个目录后选择"
        .CancelError = True
    End With

    '此遇错继续是处理选择目录框点击“取消”的行为
    On Error Resume Next
    CommonDialog1.ShowOpen
    If Err.Number = cdlCancel Then Exit Sub
    Err.Clear
    On Error GoTo 0

    MsgBox Left(CommonDialog1.FileName, Len(CommonDialog1.FileName) - Len(CommonDialog1.FileTitle))

End Sub
这个也可以吧,谢谢!!!
itakeblue 2013-05-21
  • 打赏
  • 举报
回复
有一个变通的办法,还是使用ms common dialog组件
Private Sub Form_Load()

    With CommonDialog1
        .Flags = cdlOFNPathMustExist
        .Flags = .Flags Or cdlOFNHideReadOnly
        .Flags = .Flags Or cdlOFNNoChangeDir
        .Flags = .Flags Or cdlOFNExplorer
        .DialogTitle = lang_select_folder
        .FileName = "请进入一个目录后选择"
        .CancelError = True
    End With

    '此遇错继续是处理选择目录框点击“取消”的行为
    On Error Resume Next
    CommonDialog1.ShowOpen
    If Err.Number = cdlCancel Then Exit Sub
    Err.Clear
    On Error GoTo 0

    MsgBox Left(CommonDialog1.FileName, Len(CommonDialog1.FileName) - Len(CommonDialog1.FileTitle))

End Sub
threenewbee 2013-05-21
  • 打赏
  • 举报
回复
引用 10 楼 zhuozhuo2011 的回复:
[quote=引用 9 楼 caozhy 的回复:] [quote=引用 8 楼 zhuozhuo2011 的回复:] 有没有类似的实例呢?
我用C#写过,需要一些耐心。因为是单位的代码,就不贴了。[/quote] 能不能发过来,谢谢!zhuozhuo2011@163.com[/quote] 原理就是我前面说的。代码不能给你了。
zhuozhuo2011 2013-05-21
  • 打赏
  • 举报
回复
引用 9 楼 caozhy 的回复:
[quote=引用 8 楼 zhuozhuo2011 的回复:] 有没有类似的实例呢?
我用C#写过,需要一些耐心。因为是单位的代码,就不贴了。[/quote] 能不能发过来,谢谢!zhuozhuo2011@163.com
stincen 2013-05-21
  • 打赏
  • 举报
回复
谁有VB从入门到精通视频教程,下载地址
threenewbee 2013-05-20
  • 打赏
  • 举报
回复
引用 8 楼 zhuozhuo2011 的回复:
有没有类似的实例呢?
我用C#写过,需要一些耐心。因为是单位的代码,就不贴了。
zhuozhuo2011 2013-05-19
  • 打赏
  • 举报
回复
有没有类似的实例呢?
threenewbee 2013-05-18
  • 打赏
  • 举报
回复
可以做,但是很麻烦。 首先你要很精通api和窗口hook。 思路是 http://msdn.microsoft.com/en-us/library/windows/desktop/ms646960(v=vs.85).aspx#_win32_Explorer_Style_Hook_Procedures Open and Save As Dialog Box Customization 小节介绍的对话框挂钩方式,你可以移除文件类型的下拉,以及不允许选择文件。
zhuozhuo2011 2013-05-18
  • 打赏
  • 举报
回复
引用 5 楼 Chen8013 的回复:
这种对话框,我只在 Visual Studio .NET 中看到它用过。 还真不知道它是如何实现用于打开文件夹,而不是用于打开文件的。
这个是遨游浏览器中的打开文件夹的,跟VB中打开文件的界面几乎一样啊! 有没有什么方法能做到这样的?
舉杯邀明月 2013-05-18
  • 打赏
  • 举报
回复
这种对话框,我只在 Visual Studio .NET 中看到它用过。 还真不知道它是如何实现用于打开文件夹,而不是用于打开文件的。
zhuozhuo2011 2013-05-18
  • 打赏
  • 举报
回复
这是树状的啊,不要这种的,谢谢!!!
worldy 2013-05-18
  • 打赏
  • 举报
回复
Private Const BIF_BROWSEINCLUDEFILES = &H4000  '// Browsing for Everything

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

'API's for selecting a windows directory
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)

Public Function GetDirectory(hWnd As Long) As String
Dim bi As BROWSEINFO
Dim pidl As Long
Dim Path As String, Pos As Long

bi.hOwner = hWnd
bi.pidlRoot = 0&
bi.lpszTitle = "选择文件夹..."
bi.ulFlags = BIF_RETURNONLYFSDIRS
pidl = SHBrowseForFolder(bi)
Path = Space$(256)

If SHGetPathFromIDList(ByVal pidl, ByVal Path) Then
Pos = InStr(Path, Chr$(0))
GetDirectory = Left$(Path, Pos - 1)
End If

Call CoTaskMemFree(pidl)
End Function

'Public Function GetStrByteNum(s As String) As Long
' GetStrByteNum = LenB(StrConv(s, vbFromUnicode))
'End Function

zhuozhuo2011 2013-05-18
  • 打赏
  • 举报
回复
ms common diaolog 控件只能选择文件,我要的文件夹,用API的那中树形的很不方便,这种文件夹选择对话框是怎么弄的啊?
worldy 2013-05-18
  • 打赏
  • 举报
回复
引用ms common diaolog 控件

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧