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

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




...全文
77 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaboyzyq 2010-03-06
  • 打赏
  • 举报
回复

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
fzx4936 2010-03-05
  • 打赏
  • 举报
回复
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
fzx4936 2010-03-05
  • 打赏
  • 举报
回复
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
bcrun 2010-03-05
  • 打赏
  • 举报
回复
楼主怎么了,不是在你这帖里已给你解答了吗?:)

http://topic.csdn.net/u/20100304/22/919fc4c3-0eb2-4279-829c-70348810c5a5.html
Commondialog控件,请大家帮帮忙,,谢谢... [控件]
tang688 2010-03-05
  • 打赏
  • 举报
回复
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
只是给你个思路,程序未完善.
dazhi518 2010-03-05
  • 打赏
  • 举报
回复
搞什么,不用这么复杂吧...

7,787

社区成员

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

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