Ограничить количество выборов в MultiSelect ListBox в Access? - PullRequest
1 голос
/ 10 сентября 2009

Есть ли способ ограничить количество выборов, которые пользователь может выбрать в ListBox с включенным MultiSelect в Access 2003? Прямо сейчас у меня есть процедура, которая запускает событие On Click, которое проверяет количество выбранных вариантов и, если оно превышает мой порог, будет отображаться предупреждающая метка.

Ответы [ 4 ]

3 голосов
/ 10 сентября 2009

Вы можете использовать событие listbox BeforeUpdate, чтобы увидеть значение listbox.ItemsSelected.Count. Если это превышает ваш лимит, вы отменяете (с listbox.Selectec (item) = False) текущий и отменяете событие.

Вот пример: Private Sub lstItems_BeforeUpdate(Cancel As Integer)</p> <pre><code>' 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

3 голосов
/ 11 сентября 2009

Дайте это попробовать. Он в основном отменяет выбор последнего выбранного элемента, если он превышает предопределенный предел:

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
1 голос
/ 12 сентября 2009

Я бы предположил, что гораздо более управляемым, удобным для пользователя и понятным пользовательским интерфейсом для этого будет подход с парными списками с ADD> и кнопкой после того, как пользователь достигнет предела. Вам не нужно делать ничего сложного, просто проверьте ListCount в правом списке и отключите кнопку ADD>, когда она достигнет предела.

И вы избегаете многих проблем, поскольку пользователю совершенно ясно, что они делают, по сравнению с выбором нескольких элементов одновременно в одном списке. Вы можете сделать множественный выбор в левом списке и просто отключить кнопку ADD>, если количество элементов ItemsSelected превышает лимит, и соответствующим образом уведомить пользователя.

1 голос
/ 10 сентября 2009

Используя список элементов ItemsSelected collection? Это единственный известный мне способ ограничить количество выбранных предметов. ОТО, есть некоторые действительно извращенные люди, которые могли бы найти альтернативу, поэтому я никогда не говорю никогда.

В чем проблема с этим методом?

...