Commondialog控件,请大家帮帮忙,,谢谢...

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




...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
panqingchuan 2010-03-05
  • 打赏
  • 举报
回复
3楼的太复杂了吧。而且他界面的Text框有限,你的循环貌似不行耶。
孤独剑_LPZ 2010-03-05
  • 打赏
  • 举报
回复
手工做的对话框吧,其实自己做个也不错
东方之珠 2010-03-05
  • 打赏
  • 举报
回复
引用楼主 dazhi518 的回复:
如下图我想单击一下command1弹出一个Commondialog通用对话框, 通用对话的框的Flags属性取值512(可多选),选择几个文件后,单击确定,这几个所选文件的名字就能分别显示在Text1的控件组里,改如果写呀...请各位高手帮忙解决,或给点思路..谢谢.


这个对话框版本太低,还是用 Comdlg32.ocx 新的对话框(Microsoft Common Dialog Control 6.0)。
用1楼的Spilt函数就可以了。看你的设计,只能显示前6个文件名。
chinaboyzyq 2010-03-05
  • 打赏
  • 举报
回复

Private Sub Command1_Click()
Dim a() As String, i As Integer, num As Integer
For i = 0 To Text1.Count - 1
Text1(i).Text = ""
Next
CommonDialog1.FileName = ""
' 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & _
"(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
' 指定缺省的过滤器
CommonDialog1.FilterIndex = 1
'允许多重选择
CommonDialog1.Flags = cdlOFNAllowMultiselect
'设置打开的文件名的最大尺寸
CommonDialog1.MaxFileSize = 4096
' 显示“打开”对话框
CommonDialog1.ShowOpen
'放入textbox数组
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
Exit Sub

ErrHandler:
' 用户按了“取消”按钮
Exit Sub

End Sub

dazhi518 2010-03-05
  • 打赏
  • 举报
回复
这个对话框,是把flags属性取512得到的,不管怎样,还是好心人呀,谢谢各位啦.谢谢...
bcrun 2010-03-05
  • 打赏
  • 举报
回复
补充,那个Chr(160)改为vbNullChar
bcrun 2010-03-05
  • 打赏
  • 举报
回复
引用 6 楼 panqingchuan 的回复:
3楼的太复杂了吧。而且他界面的Text框有限,你的循环貌似不行耶。


我觉得他那一部分代码就是按楼主的截图设计的啊

至于对话框样式太老的问题,是因为他没设置cdlOFNExplorer,所以是用的古老的短文件名(8.3)兼容的风格,改成这个就支持长文件名了:
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
不过哟,在家在前面给出的split方法都是不支持长文件名的.不过没事,用chr(160)分隔,把3楼的代码改成这样就行了:

Private Sub Command1_Click()
Dim a() As String, i As Integer, num As Integer
For i = 0 To Text1.Count - 1
Text1(i).Text = ""
Next
CommonDialog1.FileName = ""
' 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & _
"(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
' 指定缺省的过滤器
CommonDialog1.FilterIndex = 1
'允许多重选择
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
'设置打开的文件名的最大尺寸
CommonDialog1.MaxFileSize = 4096
' 显示“打开”对话框
CommonDialog1.ShowOpen
Debug.Print InStr(CommonDialog1.FileName, Chr(160))
'放入textbox数组
a = Split(CommonDialog1.FileName, Chr(160))
num = UBound(a)
If num > Text1.Count Then num = Text1.Count
For i = 1 To num
Text1(i - 1) = a(i)
Next
Exit Sub

ErrHandler:
' 用户按了“取消”按钮
Exit Sub

End Sub
liguicd 2010-03-04
  • 打赏
  • 举报
回复
帮顶
嗷嗷叫的老马 2010-03-04
  • 打赏
  • 举报
回复
    Dim I As Long, J() As String

CommonDialog1.ShowOpen
J = Split(CommonDialog1.FileName, Chr(32))

For I = 0 To UBound(J)
Debug.Print """" & J(I) & """"
Next

1,451

社区成员

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

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