请各位进来帮帮忙,,,谢谢...(commondialog对话框的多选)

时间:2022-11-01 14:31:05
我想单击一下command1弹出一个Commondialog通用对话框,
通用对话的框的Flags属性取值512(可多选),选择几个文件后,单击确定,这几个所选文件的
名字就能分别显示在Text1的控件组里,改如果写呀...请各位高手帮忙解决,或给点思路..谢谢...


请各位进来帮帮忙,,,谢谢...(commondialog对话框的多选)

请各位进来帮帮忙,,,谢谢...(commondialog对话框的多选)

6 个解决方案

#1


http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html
vb 关于commondialog的多选2008年06月19日 星期四 21:55关于commondialog的多选(如何提取文件名?)
刚写好的,给你一个函数:   
Function   OpenFile(strFileInfor   As   String,   strFileType   As   String,   blnIsMulti   As   Boolean,   OpenFileDialog   As   Control)   As   String()   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          'OpenFileDialog         通用对话框   
          'strstrfileInfor       文件提示   
          'strstrfileType         文件类型,扩展名   
          'blnblnismulti           是否为多选   
          '返回为文件名数组,OpenFile(0)存放文件路径,从1开始存放文件名,包括只有一个文件时的情况。   
          '返回的路径中已经包含了最后的"\"   
          '如果没有选择任何文件,OpenFileFuction(0)返回为""   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          '设置打开文件对话框过滤器   
          OpenFileDialog.Filter   =   strFileInfor   &   "|"   &   strFileType   
          '设定是否可以多选   
          If blnIsMulti   Then   
              OpenFileDialog.Flags   =   &H80200   
              OpenFileDialog.MaxFileSize   =   1024     '设置使用CommonDialog控件被打开的文件名的最大尺寸   
          Else   
              OpenFileDialog.Flags   =   0   
          End If   
          OpenFileDialog.ShowOpen   
          '提取各文件名   
          Dim   tempStr   As   String   
          Dim   tempFileName()   As   String   
          tempStr   =   OpenFileDialog.FileName   
          '如果用户取消了,或没有选择任何文件,处理返回仍为数组形式,OpenFileFuction(0)为""   
          If   tempStr   =   ""   Then   
                  ReDim   tempFileName(0)   
                  tempFileName(0)   =   ""   
                  OpenFile   =   tempFileName   
                  Exit   Function   
          End   If   
          Dim P,N As Long   
          P = 0                       '分隔字符位置   
          N = 0                       '文件个数   
          '提取路径   
          ReDim   tempFileName(1)                                    '至少有一个文件   
          P   =   InStr(tempStr,   Chr(160))                         '为UNICODE   
            
          If   P   =   0   Then             '如果只选择了一个文件   
                  P   =   InStrRev(tempStr,   "\")                    'P取得"\"所在位置   
                  tempFileName(0)   =   Left(tempStr,   P   -   1)   
                  tempFileName(1)   =   Mid(tempStr,   P   +   1)   
          Else                                                         '选择了多个文件   
                  Do   While   tempStr   <>   ""   
                          P   =   InStr(tempStr,   Chr(160))            '为UNICODE   
                          ReDim   Preserve   tempFileName(N)   
                            
                          '如果没有空格(只剩余一个文件)   
                          If   P   =   0   Then   
                                  tempFileName(N)   =   tempStr   
                                  Exit   Do   
                          Else   
                                  tempFileName(N)   =   Left(tempStr,   P   -   1)   
                                  tempStr   =   Mid(tempStr,   P   +   1)   
                                  N   =   N   +   1   
                          End   If   
                  Loop   
          EndIf      
          '处理路径   
          tempStr   =   tempFileName(0)   
          tempFileName(0)   =   IIf(Len(tempStr)   =   3,   tempStr,   tempStr   &   "\")   
          '返回文件名数组   
          OpenFile   =   tempFileName   
          '还原为单选   
          OpenFileDialog.Flags   =   0   
            
End   Function 

#2


http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html
vb 关于commondialog的多选2008年06月19日 星期四 21:55关于commondialog的多选(如何提取文件名?)
刚写好的,给你一个函数:   
Function   OpenFile(strFileInfor   As   String,   strFileType   As   String,   blnIsMulti   As   Boolean,   OpenFileDialog   As   Control)   As   String()   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          'OpenFileDialog         通用对话框   
          'strstrfileInfor       文件提示   
          'strstrfileType         文件类型,扩展名   
          'blnblnismulti           是否为多选   
          '返回为文件名数组,OpenFile(0)存放文件路径,从1开始存放文件名,包括只有一个文件时的情况。   
          '返回的路径中已经包含了最后的"\"   
          '如果没有选择任何文件,OpenFileFuction(0)返回为""   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          '设置打开文件对话框过滤器   
          OpenFileDialog.Filter   =   strFileInfor   &   "|"   &   strFileType   
          '设定是否可以多选   
          If blnIsMulti   Then   
              OpenFileDialog.Flags   =   &H80200   
              OpenFileDialog.MaxFileSize   =   1024     '设置使用CommonDialog控件被打开的文件名的最大尺寸   
          Else   
              OpenFileDialog.Flags   =   0   
          End If   
          OpenFileDialog.ShowOpen   
          '提取各文件名   
          Dim   tempStr   As   String   
          Dim   tempFileName()   As   String   
          tempStr   =   OpenFileDialog.FileName   
          '如果用户取消了,或没有选择任何文件,处理返回仍为数组形式,OpenFileFuction(0)为""   
          If   tempStr   =   ""   Then   
                  ReDim   tempFileName(0)   
                  tempFileName(0)   =   ""   
                  OpenFile   =   tempFileName   
                  Exit   Function   
          End   If   
          Dim P,N As Long   
          P = 0                       '分隔字符位置   
          N = 0                       '文件个数   
          '提取路径   
          ReDim   tempFileName(1)                                    '至少有一个文件   
          P   =   InStr(tempStr,   Chr(160))                         '为UNICODE   
            
          If   P   =   0   Then             '如果只选择了一个文件   
                  P   =   InStrRev(tempStr,   "\")                    'P取得"\"所在位置   
                  tempFileName(0)   =   Left(tempStr,   P   -   1)   
                  tempFileName(1)   =   Mid(tempStr,   P   +   1)   
          Else                                                         '选择了多个文件   
                  Do   While   tempStr   <>   ""   
                          P   =   InStr(tempStr,   Chr(160))            '为UNICODE   
                          ReDim   Preserve   tempFileName(N)   
                            
                          '如果没有空格(只剩余一个文件)   
                          If   P   =   0   Then   
                                  tempFileName(N)   =   tempStr   
                                  Exit   Do   
                          Else   
                                  tempFileName(N)   =   Left(tempStr,   P   -   1)   
                                  tempStr   =   Mid(tempStr,   P   +   1)   
                                  N   =   N   +   1   
                          End   If   
                  Loop   
          EndIf      
          '处理路径   
          tempStr   =   tempFileName(0)   
          tempFileName(0)   =   IIf(Len(tempStr)   =   3,   tempStr,   tempStr   &   "\")   
          '返回文件名数组   
          OpenFile   =   tempFileName   
          '还原为单选   
          OpenFileDialog.Flags   =   0   
            
End   Function 

#3


搞什么,不用这么复杂吧...

#4


Private Sub Text1_Click(Index As Integer)
  id=index
  运行打开文件
end sub
Private Sub 打开文件
If CommonDialog1.FileName <> "" Then
  text1(id).text=CommonDialog1.FileName
end if
end sub
只是给你个思路,程序未完善.

#5


楼主怎么了,不是在你这帖里已给你解答了吗?:)

http://topic.csdn.net/u/20100304/22/919fc4c3-0eb2-4279-829c-70348810c5a5.html
Commondialog控件,请大家帮帮忙,,谢谢... [控件] 

#6



Private Sub Command1_Click()
    Dim a() As String, i As Integer, num As Integer
    CommonDialog1.FileName = ""
    CommonDialog1.Flags = 512
    CommonDialog1.ShowOpen
    a = Split(CommonDialog1.FileName)
    num = UBound(a)
    If num > Text1.Count Then num = Text1.Count
    For i = 1 To num
        Text1(i - 1) = a(i)
    Next
End Su

#1


http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html
vb 关于commondialog的多选2008年06月19日 星期四 21:55关于commondialog的多选(如何提取文件名?)
刚写好的,给你一个函数:   
Function   OpenFile(strFileInfor   As   String,   strFileType   As   String,   blnIsMulti   As   Boolean,   OpenFileDialog   As   Control)   As   String()   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          'OpenFileDialog         通用对话框   
          'strstrfileInfor       文件提示   
          'strstrfileType         文件类型,扩展名   
          'blnblnismulti           是否为多选   
          '返回为文件名数组,OpenFile(0)存放文件路径,从1开始存放文件名,包括只有一个文件时的情况。   
          '返回的路径中已经包含了最后的"\"   
          '如果没有选择任何文件,OpenFileFuction(0)返回为""   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          '设置打开文件对话框过滤器   
          OpenFileDialog.Filter   =   strFileInfor   &   "|"   &   strFileType   
          '设定是否可以多选   
          If blnIsMulti   Then   
              OpenFileDialog.Flags   =   &H80200   
              OpenFileDialog.MaxFileSize   =   1024     '设置使用CommonDialog控件被打开的文件名的最大尺寸   
          Else   
              OpenFileDialog.Flags   =   0   
          End If   
          OpenFileDialog.ShowOpen   
          '提取各文件名   
          Dim   tempStr   As   String   
          Dim   tempFileName()   As   String   
          tempStr   =   OpenFileDialog.FileName   
          '如果用户取消了,或没有选择任何文件,处理返回仍为数组形式,OpenFileFuction(0)为""   
          If   tempStr   =   ""   Then   
                  ReDim   tempFileName(0)   
                  tempFileName(0)   =   ""   
                  OpenFile   =   tempFileName   
                  Exit   Function   
          End   If   
          Dim P,N As Long   
          P = 0                       '分隔字符位置   
          N = 0                       '文件个数   
          '提取路径   
          ReDim   tempFileName(1)                                    '至少有一个文件   
          P   =   InStr(tempStr,   Chr(160))                         '为UNICODE   
            
          If   P   =   0   Then             '如果只选择了一个文件   
                  P   =   InStrRev(tempStr,   "\")                    'P取得"\"所在位置   
                  tempFileName(0)   =   Left(tempStr,   P   -   1)   
                  tempFileName(1)   =   Mid(tempStr,   P   +   1)   
          Else                                                         '选择了多个文件   
                  Do   While   tempStr   <>   ""   
                          P   =   InStr(tempStr,   Chr(160))            '为UNICODE   
                          ReDim   Preserve   tempFileName(N)   
                            
                          '如果没有空格(只剩余一个文件)   
                          If   P   =   0   Then   
                                  tempFileName(N)   =   tempStr   
                                  Exit   Do   
                          Else   
                                  tempFileName(N)   =   Left(tempStr,   P   -   1)   
                                  tempStr   =   Mid(tempStr,   P   +   1)   
                                  N   =   N   +   1   
                          End   If   
                  Loop   
          EndIf      
          '处理路径   
          tempStr   =   tempFileName(0)   
          tempFileName(0)   =   IIf(Len(tempStr)   =   3,   tempStr,   tempStr   &   "\")   
          '返回文件名数组   
          OpenFile   =   tempFileName   
          '还原为单选   
          OpenFileDialog.Flags   =   0   
            
End   Function 

#2


http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html
vb 关于commondialog的多选2008年06月19日 星期四 21:55关于commondialog的多选(如何提取文件名?)
刚写好的,给你一个函数:   
Function   OpenFile(strFileInfor   As   String,   strFileType   As   String,   blnIsMulti   As   Boolean,   OpenFileDialog   As   Control)   As   String()   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          'OpenFileDialog         通用对话框   
          'strstrfileInfor       文件提示   
          'strstrfileType         文件类型,扩展名   
          'blnblnismulti           是否为多选   
          '返回为文件名数组,OpenFile(0)存放文件路径,从1开始存放文件名,包括只有一个文件时的情况。   
          '返回的路径中已经包含了最后的"\"   
          '如果没有选择任何文件,OpenFileFuction(0)返回为""   
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
          '设置打开文件对话框过滤器   
          OpenFileDialog.Filter   =   strFileInfor   &   "|"   &   strFileType   
          '设定是否可以多选   
          If blnIsMulti   Then   
              OpenFileDialog.Flags   =   &H80200   
              OpenFileDialog.MaxFileSize   =   1024     '设置使用CommonDialog控件被打开的文件名的最大尺寸   
          Else   
              OpenFileDialog.Flags   =   0   
          End If   
          OpenFileDialog.ShowOpen   
          '提取各文件名   
          Dim   tempStr   As   String   
          Dim   tempFileName()   As   String   
          tempStr   =   OpenFileDialog.FileName   
          '如果用户取消了,或没有选择任何文件,处理返回仍为数组形式,OpenFileFuction(0)为""   
          If   tempStr   =   ""   Then   
                  ReDim   tempFileName(0)   
                  tempFileName(0)   =   ""   
                  OpenFile   =   tempFileName   
                  Exit   Function   
          End   If   
          Dim P,N As Long   
          P = 0                       '分隔字符位置   
          N = 0                       '文件个数   
          '提取路径   
          ReDim   tempFileName(1)                                    '至少有一个文件   
          P   =   InStr(tempStr,   Chr(160))                         '为UNICODE   
            
          If   P   =   0   Then             '如果只选择了一个文件   
                  P   =   InStrRev(tempStr,   "\")                    'P取得"\"所在位置   
                  tempFileName(0)   =   Left(tempStr,   P   -   1)   
                  tempFileName(1)   =   Mid(tempStr,   P   +   1)   
          Else                                                         '选择了多个文件   
                  Do   While   tempStr   <>   ""   
                          P   =   InStr(tempStr,   Chr(160))            '为UNICODE   
                          ReDim   Preserve   tempFileName(N)   
                            
                          '如果没有空格(只剩余一个文件)   
                          If   P   =   0   Then   
                                  tempFileName(N)   =   tempStr   
                                  Exit   Do   
                          Else   
                                  tempFileName(N)   =   Left(tempStr,   P   -   1)   
                                  tempStr   =   Mid(tempStr,   P   +   1)   
                                  N   =   N   +   1   
                          End   If   
                  Loop   
          EndIf      
          '处理路径   
          tempStr   =   tempFileName(0)   
          tempFileName(0)   =   IIf(Len(tempStr)   =   3,   tempStr,   tempStr   &   "\")   
          '返回文件名数组   
          OpenFile   =   tempFileName   
          '还原为单选   
          OpenFileDialog.Flags   =   0   
            
End   Function 

#3


搞什么,不用这么复杂吧...

#4


Private Sub Text1_Click(Index As Integer)
  id=index
  运行打开文件
end sub
Private Sub 打开文件
If CommonDialog1.FileName <> "" Then
  text1(id).text=CommonDialog1.FileName
end if
end sub
只是给你个思路,程序未完善.

#5


楼主怎么了,不是在你这帖里已给你解答了吗?:)

http://topic.csdn.net/u/20100304/22/919fc4c3-0eb2-4279-829c-70348810c5a5.html
Commondialog控件,请大家帮帮忙,,谢谢... [控件] 

#6



Private Sub Command1_Click()
    Dim a() As String, i As Integer, num As Integer
    CommonDialog1.FileName = ""
    CommonDialog1.Flags = 512
    CommonDialog1.ShowOpen
    a = Split(CommonDialog1.FileName)
    num = UBound(a)
    If num > Text1.Count Then num = Text1.Count
    For i = 1 To num
        Text1(i - 1) = a(i)
    Next
End Su