Frage

Gibt es eine Möglichkeit, die Anzahl der Auswahl eines Benutzer zu beschränken, auf einer List-Box mit Multiselect in Access 2003 aktiviert wählen kann? Im Moment habe ich ein Verfahren, das auf der On Click-Ereignis ausgelöst wird, die die Anzahl von Auswahlmöglichkeiten überprüft ausgewählt und wenn es über meine Schwelle ist, wird es einen Warnhinweis angezeigt werden soll.

War es hilfreich?

Lösung

Geben Sie diesem einen Versuch. Es Abwahl im Grunde das letzte Element ausgewählt, wenn seine über den vorgegebenen Grenzwert:

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

Andere Tipps

Sie können das Listenfeld VorAktualisierung Ereignis verwenden, um den listbox.ItemsSelected.Count Wert anzuzeigen. Wenn dies über Ihr Limit ist dann abzuwählen Sie die aktuellen (mit listbox.Selectec (Punkt) = false) und das Ereignis abbrechen.

Hier ist ein Beispiel: 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

Mit der Listbox Sammlung ItemsSelected? Das ist der einzige Weg, die ich kenne, die Anzahl der ausgewählten Elemente zu begrenzen. OTOH gibt es einige wirklich verdrehten Individuen gibt, die eine Alternative herausgefunden haben könnte, so dass ich nie nie sagen.

Was ist das problemw mit dieser Methode?

Ich würde vorschlagen, dass eine viel handliche, benutzerfreundliche und verständliche Benutzeroberfläche für diese der gepaart listbox Ansatz wäre, mit ADD> und Taste, nachdem der Benutzer das Limit erreicht hat. Sie müssen nicht alles schwierig machen, überprüfen Sie die Listcount der rechten Listbox und deaktivieren Sie die ADD> drücken, wenn sie die Grenze erreicht.

Und Sie viele Probleme vermeiden, wie es für den Benutzer ganz klar ist, was sie im Vergleich zu der Auswahl mehrerer Elemente auf einmal in einem einzigen listbox tun. Sie könnten die linke Listbox Mehrfachauswahl machen und einfach die ADD deaktivieren> Taste, wenn die ItemsSelected Zählung den Grenzwert überschreitet, und benachrichtigen den Benutzer entsprechend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top