有没有办法限制用户可以在Access 2003中启用MultiSelect的ListBox上选择的选项数量?现在我有一个触发On Click事件的程序,它检查所选择的选项数量,如果它超过我的阈值,它将显示一个警告标签。
答案 0 :(得分:3)
您可以使用listbox BeforeUpdate事件来查看listbox.ItemsSelected.Count值。 如果超过了你的限制,那么你取消选择(使用listbox.Selectec(item)= False)当前的一个并取消该事件。
这是一个例子:
Private Sub lstItems_BeforeUpdate(Cancel As Integer)
' Warn the user that only x items can be selected.
' ------------------------------------------------
If lstItems.ItemsSelected.Count > MAX_SELECTED_ITEM_PERMITTED Then
MsgBox "You can only select " & MAX_SELECTED_ITEM_PERMITTED & " items in this list.", vbOKOnly + vbInformation, "Error"
' Unselect previously selected item.
' ----------------------------------
lstItems.Selected(lstItems.ListIndex) = False
Cancel = True
End If
End Sub
' Warn the user that only x items can be selected.
' ------------------------------------------------
If lstItems.ItemsSelected.Count > MAX_SELECTED_ITEM_PERMITTED Then
MsgBox "You can only select " & MAX_SELECTED_ITEM_PERMITTED & " items in this list.", vbOKOnly + vbInformation, "Error"
' Unselect previously selected item.
' ----------------------------------
lstItems.Selected(lstItems.ListIndex) = False
Cancel = True
End If
End Sub
答案 1 :(得分:3)
试一试。如果超过预定义的限制,它基本上取消选择最后选择的项目:
Private Sub ListBox1_Change()
Dim counter As Integer
Dim selectedCount As Integer
selectedCount = 0
For counter = 1 To ListBox1.ListCount Step 1
If ListBox1.Selected(counter - 1) = True Then 'selected method has 0 base
selectedCount = selectedCount + 1
End If
Next counter
If selectedCount >= 4 Then 'modify # here
ListBox1.Selected(ListBox1.ListIndex) = False 'listindex returns the active row you just selected
MsgBox "Limited to 4 Choices", vbInformation + vbOKOnly, "Retry:"
End If
End Sub
答案 2 :(得分:1)
使用列表框ItemsSelected集合?这是我所知道的限制所选项目数量的唯一方法。 OTOH有一些真正扭曲的人可能已经找到了替代方案,所以我永远不会说永远不会。
这种方法有什么问题?
答案 3 :(得分:1)
我建议使用更加易于管理,用户友好且易于理解的用户界面配对列表框方法,ADD>用户达到限制后按钮。您不必做任何困难,只需检查右侧列表框的ListCount并禁用ADD>按钮达到限制时。
您可以避免许多问题,因为与在一个列表框中一次选择多个项目相比,用户可以清楚地知道他们正在做什么。你可以使左手列表框多选,只需禁用ADD>如果ItemsSelected计数超出限制,则按钮,并正确通知用户。