
Excel VB ListBox触发事件
对listbox1进行操作单击listbox1的item可以把单个文件加入listbox2。按键盘Ctrl键单击多个item可以把多个item加入listbox2。按键盘...
对listbox1进行操作
单击listbox1的item可以把单个文件加入listbox2。
按键盘Ctrl键单击多个item可以把多个item加入listbox2。
按键盘Shift键单击2个item可以把2个item之间的多个文件都加入listbox2。
当MultiSelect 设置为1或2时,listbox1触发事件不发生。所以以上功能很难实现! 展开
单击listbox1的item可以把单个文件加入listbox2。
按键盘Ctrl键单击多个item可以把多个item加入listbox2。
按键盘Shift键单击2个item可以把2个item之间的多个文件都加入listbox2。
当MultiSelect 设置为1或2时,listbox1触发事件不发生。所以以上功能很难实现! 展开
3个回答
展开全部
你的想法本身有矛盾
在MULTISELECT状态下
单击行为是表示正在进行选择
而根据你的描述,最后一次单击才是将已选择的多个ITEM加入到LISTBOX2
而系统无法判断哪一次是最后一次单击
所以是否考虑其他变通的办法
不靠CLICK事件触发,而是用EXIT事件
当LISTBOX1获得焦点时,可以进行多选
当LISTBOX1失去焦点时,则将已经选择的多个ITEM添加到LISTBOX2
在MULTISELECT状态下
单击行为是表示正在进行选择
而根据你的描述,最后一次单击才是将已选择的多个ITEM加入到LISTBOX2
而系统无法判断哪一次是最后一次单击
所以是否考虑其他变通的办法
不靠CLICK事件触发,而是用EXIT事件
当LISTBOX1获得焦点时,可以进行多选
当LISTBOX1失去焦点时,则将已经选择的多个ITEM添加到LISTBOX2
展开全部
我也同样想知道 ,你试下
Dim ss As Boolean
Private Sub Form_Load()
List1.AddItem "12", 0
List1.AddItem "11", 0
List1.AddItem "22", 0
List1.AddItem "33", 0
List1.AddItem "3456", 0
List1.AddItem "456", 0
'List1.MultiSelect = 1
ss = True
End Sub
Private Sub List1_Click()
Dim s1 As String, i As Integer
If ss = False Then
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
s1 = List1.List(i)
List2.AddItem s1, List2.ListCount
End If
Next
Else
s1 = List1.Text
List2.AddItem s1, List2.ListCount
End IfEnd Sub
Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
If vbAltMask Then
ss = False
End If
End Sub
Private Sub List1_KeyUp(KeyCode As Integer, Shift As Integer)
If vbAltMask Then
ss = False
End If
End Sub
Dim ss As Boolean
Private Sub Form_Load()
List1.AddItem "12", 0
List1.AddItem "11", 0
List1.AddItem "22", 0
List1.AddItem "33", 0
List1.AddItem "3456", 0
List1.AddItem "456", 0
'List1.MultiSelect = 1
ss = True
End Sub
Private Sub List1_Click()
Dim s1 As String, i As Integer
If ss = False Then
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
s1 = List1.List(i)
List2.AddItem s1, List2.ListCount
End If
Next
Else
s1 = List1.Text
List2.AddItem s1, List2.ListCount
End IfEnd Sub
Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
If vbAltMask Then
ss = False
End If
End Sub
Private Sub List1_KeyUp(KeyCode As Integer, Shift As Integer)
If vbAltMask Then
ss = False
End If
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询