2、ListBox的style设置为1 ,则为可以多选checkbox的形式'判断多选取值的方法 '判断listbox 的取值 Private Sub Command1_Click() Dim i As Integer For i = 0 To List1.ListCount - 1 If List1.Selected(i) = True Then MsgBox List1.List(i) End If Next End Sub
1.为什么要用CommonDialog1控件,打包的时候要凭空多出一个OCX,几百K,很大的哦,直接用 API就可以实现了,参看: http://www.mvps.org/vbnet/index.html?code/comdlg/filedlgsoverview.htm 其中这个属性是设置是否允许多文件选择 Public Const OFN_ALLOWMULTISELECT As Long = &H200 2.ListBox可以多选,必须在程序运行之前将ListBox的MultiSelect属性为2.
'-------------------------------------- '用通用对话框同时选择多个文件 '-------------------------------------- ' 洪恩在线 求知无限 '-------------------------------------- '------名称-------------作用------------ ' mnuOpen “打开”菜单项 ' mnuExit “退出”菜单项 ' cmdExit “退出”按钮 ' CommonDialog1 通用对话框 ' Label1-2 标签 ' List1 显示选中文件的列表框 ListBox '--------------------------------------Private Sub cmdExit_Click() Unload Me End SubPrivate Sub Form_Load()End SubPrivate Sub mnuExit_Click() Unload Me End Sub Private Sub mnuOpen_Click() Dim I As Integer Dim Y As Integer Dim Z As Integer '存储文件名的数组 Dim FileNames$() CommonDialog1.FileName = "" CommonDialog1.Filter = "All Files|*.*" '为“打开”和“另存为”对话框返回或设置选项。 '语法 'object.Flags [= value] '------------------------------------------------------ 'Flags 属性语法有下列部分: '部分 描述 '------------------------------------------------------ 'object 对象表达式,其值是“应用于”列表中的对象。 'value 如“设置值”中所描述,是为“打开”和“另存为”对话框指定选项的常数或值。 '------------------------------------------------------ 'Value 的设置值是: '------------------------------------------------------ '常数 值 描述 '------------------------------------------------------ 'cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开。 'cdlOFNCreatePrompt &H2000 当文件不存在时对话框要提示创建文件。该标志自动设置 cdlOFNPathMustExist 和 cdlOFNFileMustExist 标志。 'cdlOFNExplorer &H80000 它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。 'cdlOFNExtensionDifferent &H400 它指示返回的文件扩展名与 DefaultExt 属性指定的扩展名不一致。如果 DefaultExt 属性是 Null,或者扩展相匹配,或者没有扩展时,此标志不设置。当关闭对话框时,可以检查这个标志的值。 'cdlOFNFileMustExist &H1000 它指定只能输入文件名文本框已经存在的文件名。如果该标志被设置,则当用户输入非法的文件名时,要显示一个警告。该标志自动设置 cdlOFNPathMustExist 标志。 'cdlOFNHelpButton &H10 使对话框显示帮助按钮。 'cdlOFNHideReadOnly &H4 隐藏只读复选框。 'cdlOFNLongNames &H200000使用长文件名。 'cdlOFNNoChangeDir &H8 强制对话框将对话框打开时的目录置成当前目录。 'cdlOFNNoDereferencelinks &H100000不要间接引用外壳链接(也称作快捷方式)。缺省时,选取外壳链接会引起它被外壳间接引用。 'cdlOFNNoLongNames &H40000 无长文件名。 'cdlOFNNoReadOnlyReturn &H8000 它指定返回的文件不能具有只读属性,也不能在写保护目录下面。 'cdlOFNNoValidate &H100 它指定公共对话框允许返回的文件名中含有非法字符。 'cdlOFNOverwritePrompt &H2 使“另存为”对话框当选择的文件已经存在时应产生一个信息框,用户必须确认是否覆盖该文件。 'cdlOFNPathMustExist &H800 它指定只能输入有效路径。如果设置该标志,输入非法路径时,应显示一个警告信息。 'cdlOFNReadOnly &H1 建立对话框时,只读复选框初始化为选定。该标志也指示对话框关闭时只读复选框的状态。 'cdlOFNShareAware &H4000 它指定忽略共享冲突错误。 '----------------------------------------------------- CommonDialog1.Flags = cdlOFNAllowMultiselect CommonDialog1.Action = 1 '它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及 '使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后, 'FileName 属性就返回一个包含全部所选文件名的字符串。 '串中各文件名用空格隔开。 CommonDialog1.FileName = CommonDialog1.FileName & Chr(32) '从返回的字符串中分离出文件名 '经过分离后FileNames(Y)数组存放着选择的文件名信息 '如果只有一个文件 FileNames(0)=“文件名” '如果有多个文件 FileNames(0)=“路径名” FileNames(1--y)=“文件名” '这时我们需要对数组进行处理 Z = 1 For I = 1 To Len(CommonDialog1.FileName) 'InStr函数,返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。 '语法 InStr(起点位置, string1, string2) I = InStr(Z, CommonDialog1.FileName, Chr(32)) If I = 0 Then Exit Sub ReDim Preserve FileNames(Y) 'Mid函数,返回 Variant (String),其中包含字符串中指定数量的字符。 '语法 Mid(string, start[, length]) FileNames(Y) = Mid(CommonDialog1.FileName, Z, I - Z) Z = I + 1 Y = Y + 1 Next '先清空列表框中已有内容 List1.Clear '如果只有一个文件 FileNames(0)=“文件名” If Y = 1 Then List1.AddItem FileNames(0) '如果文件个数为多个,将“路径”+“\”+“文件名”后作为完整的文件名 Else
For I = 1 To Y - 1 List1.AddItem FileNames(0) & "\" & FileNames(I) Next End If End Sub
listbox的MultiSelect属性: 0 表示不能多选 1 表示简单多选 2 表示宽展多选
谢谢大家的帮助 To:SoHo_Andy(冰) '判断多选取值的方法 '判断listbox 的取值 Private Sub Command1_Click() Dim i As Integer For i = 0 To List1.ListCount - 1 If List1.Selected(i) = True Then MsgBox List1.List(i) End If Next End Sub 这个会出错!????
没有错啊,你设置listbox的style 属性为 1- checkbox 了么'判断listbox 的取值 Private Sub Command1_Click() Dim i As Integer For i = 0 To List1.ListCount - 1 If List1.Selected(i) = True Then MsgBox List1.List(i) End If Next End SubPrivate Sub Form_Load() List1.AddItem "啊啊" List1.AddItem "大的" List1.AddItem "峨峨" List1.AddItem "哥哥" End Sub
'判断listbox 的取值
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
MsgBox List1.List(i)
End If
Next
End Sub
listbox中设置MultiSelect属性
设置MultiSelect属性为真即可
API就可以实现了,参看:
http://www.mvps.org/vbnet/index.html?code/comdlg/filedlgsoverview.htm
其中这个属性是设置是否允许多文件选择
Public Const OFN_ALLOWMULTISELECT As Long = &H200
2.ListBox可以多选,必须在程序运行之前将ListBox的MultiSelect属性为2.
'用通用对话框同时选择多个文件
'--------------------------------------
' 洪恩在线 求知无限
'--------------------------------------
'------名称-------------作用------------
' mnuOpen “打开”菜单项
' mnuExit “退出”菜单项
' cmdExit “退出”按钮
' CommonDialog1 通用对话框
' Label1-2 标签
' List1 显示选中文件的列表框 ListBox
'--------------------------------------Private Sub cmdExit_Click()
Unload Me
End SubPrivate Sub Form_Load()End SubPrivate Sub mnuExit_Click()
Unload Me
End Sub
Private Sub mnuOpen_Click()
Dim I As Integer
Dim Y As Integer
Dim Z As Integer
'存储文件名的数组
Dim FileNames$() CommonDialog1.FileName = ""
CommonDialog1.Filter = "All Files|*.*"
'为“打开”和“另存为”对话框返回或设置选项。
'语法
'object.Flags [= value]
'------------------------------------------------------
'Flags 属性语法有下列部分:
'部分 描述
'------------------------------------------------------
'object 对象表达式,其值是“应用于”列表中的对象。
'value 如“设置值”中所描述,是为“打开”和“另存为”对话框指定选项的常数或值。
'------------------------------------------------------
'Value 的设置值是:
'------------------------------------------------------
'常数 值 描述
'------------------------------------------------------
'cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开。
'cdlOFNCreatePrompt &H2000 当文件不存在时对话框要提示创建文件。该标志自动设置 cdlOFNPathMustExist 和 cdlOFNFileMustExist 标志。
'cdlOFNExplorer &H80000 它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。
'cdlOFNExtensionDifferent &H400 它指示返回的文件扩展名与 DefaultExt 属性指定的扩展名不一致。如果 DefaultExt 属性是 Null,或者扩展相匹配,或者没有扩展时,此标志不设置。当关闭对话框时,可以检查这个标志的值。
'cdlOFNFileMustExist &H1000 它指定只能输入文件名文本框已经存在的文件名。如果该标志被设置,则当用户输入非法的文件名时,要显示一个警告。该标志自动设置 cdlOFNPathMustExist 标志。
'cdlOFNHelpButton &H10 使对话框显示帮助按钮。
'cdlOFNHideReadOnly &H4 隐藏只读复选框。
'cdlOFNLongNames &H200000使用长文件名。
'cdlOFNNoChangeDir &H8 强制对话框将对话框打开时的目录置成当前目录。
'cdlOFNNoDereferencelinks &H100000不要间接引用外壳链接(也称作快捷方式)。缺省时,选取外壳链接会引起它被外壳间接引用。
'cdlOFNNoLongNames &H40000 无长文件名。
'cdlOFNNoReadOnlyReturn &H8000 它指定返回的文件不能具有只读属性,也不能在写保护目录下面。
'cdlOFNNoValidate &H100 它指定公共对话框允许返回的文件名中含有非法字符。
'cdlOFNOverwritePrompt &H2 使“另存为”对话框当选择的文件已经存在时应产生一个信息框,用户必须确认是否覆盖该文件。
'cdlOFNPathMustExist &H800 它指定只能输入有效路径。如果设置该标志,输入非法路径时,应显示一个警告信息。
'cdlOFNReadOnly &H1 建立对话框时,只读复选框初始化为选定。该标志也指示对话框关闭时只读复选框的状态。
'cdlOFNShareAware &H4000 它指定忽略共享冲突错误。
'-----------------------------------------------------
CommonDialog1.Flags = cdlOFNAllowMultiselect
CommonDialog1.Action = 1
'它指定文件名列表框允许多重选择。运行时,通过按 SHIFT 键以及
'使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,
'FileName 属性就返回一个包含全部所选文件名的字符串。
'串中各文件名用空格隔开。
CommonDialog1.FileName = CommonDialog1.FileName & Chr(32)
'从返回的字符串中分离出文件名
'经过分离后FileNames(Y)数组存放着选择的文件名信息
'如果只有一个文件 FileNames(0)=“文件名”
'如果有多个文件 FileNames(0)=“路径名” FileNames(1--y)=“文件名”
'这时我们需要对数组进行处理
Z = 1
For I = 1 To Len(CommonDialog1.FileName)
'InStr函数,返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。
'语法 InStr(起点位置, string1, string2)
I = InStr(Z, CommonDialog1.FileName, Chr(32))
If I = 0 Then Exit Sub
ReDim Preserve FileNames(Y)
'Mid函数,返回 Variant (String),其中包含字符串中指定数量的字符。
'语法 Mid(string, start[, length])
FileNames(Y) = Mid(CommonDialog1.FileName, Z, I - Z)
Z = I + 1
Y = Y + 1
Next
'先清空列表框中已有内容
List1.Clear
'如果只有一个文件 FileNames(0)=“文件名”
If Y = 1 Then
List1.AddItem FileNames(0)
'如果文件个数为多个,将“路径”+“\”+“文件名”后作为完整的文件名
Else
For I = 1 To Y - 1
List1.AddItem FileNames(0) & "\" & FileNames(I)
Next
End If
End Sub
0 表示不能多选
1 表示简单多选
2 表示宽展多选
To:SoHo_Andy(冰)
'判断多选取值的方法
'判断listbox 的取值
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
MsgBox List1.List(i)
End If
Next
End Sub
这个会出错!????
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
MsgBox List1.List(i)
End If
Next
End SubPrivate Sub Form_Load()
List1.AddItem "啊啊"
List1.AddItem "大的"
List1.AddItem "峨峨"
List1.AddItem "哥哥"
End Sub