取消选择单选列表框

我有一个用户窗体上的列表框,在任何时候最多可以选择1个项目。 将列表框设置为MultiSelect = fmMultiSelectSingle提供了此功能,但可以防止用户取消选择所选列表项。

为了做到这一点,我添加了一个MouseDown事件,该事件在单击某个项目时触发,而不管当前的选择状态如何,而不是Click事件,该事件仅在Click新项目时触发。

我的代码(简化如下)让用户选择一个条目。 当条目被点击时,它被选中。 当尝试取消选择通过单击同一条目,该MouseDown被触发,该项目被取消,这将触发改变的事件,这是削减短期blnDisableEvents设置为True ,并返回到MouseDown子,然后运行到年底。 但是在MouseDownMouseDown上的End Sub之后,刚被取消选择的项目被重新选择,并再次触发Change事件。

我怎样才能防止在列表框中重新选择刚取消选择的项目?

建立:
用一个名为ListBox1

码:

Option Explicit
Dim blnDisableEvents As Boolean

Private Sub ListBox1_Change()
    If blnDisableEvents Then Exit Sub
End Sub

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Not Me.ListBox1.ListIndex = -1 Then
        blnDisableEvents = True
        Me.ListBox1.Selected(Me.ListBox1.ListIndex) = False
        blnDisableEvents = False
    End If

End Sub

Private Sub userform_initialize()
    Dim i As Integer
    With Me
        For i = 1 To 2
            .ListBox1.AddItem i
        Next
    End With

End Sub
链接地址: http://www.djcxy.com/p/59903.html

上一篇: Deselect single select listbox

下一篇: Thum not allowing to fire leftMouseDown