2014-10-22 2 views
2

У меня есть ListBox внутри MS Access и хотел бы найти лучший способ получить элемент списка, который был выбран/отменен во время события on-click.MS Access Определить элемент списка, нажав на событие click

Его немного сложнее, чем перебирать выбранные элементы, поскольку список уже загружен некоторыми выбранными элементами. Я пытаюсь найти единственный элемент, который был затронут во время события on-click.

enter image description here

Таким образом, если пользователь нажимает кнопку «Col2-Хау» в приведенном выше примере, как бы я определить, что была запись щелкнул, С другой стороны, если один отменяет первую запись, я должен был бы знать. Любые подсказки?

Единственное, что я могу придумать, это использовать объект in-memory для сохранения списка выделенных строк и возврата к выбранным элементам во время щелчка, чтобы определить дельта?

+0

Единственное, что вы можете думать, вероятно, довольно близко. Еще один список с visible = false, и тот же самый источник строк, вероятно, проще: вы можете просто использовать цикл в listbox_click (для видимого), чтобы определить разницу между ними, и обновить состояние измененного элемента в невидимом один. –

ответ

6

можно использовать AfterUpdate событие, например, название ListBox является «aListbox», так попробовать это:

Private Sub aListBox_AfterUpdate() 
    Dim rowIndex As Integer 
    Dim rowValue As String 
    Dim rowIsSelected As Integer 
    Dim result As String 

    ' ListBox row index clicked 
    rowIndex = Me.aListBox.ListIndex 

    ' Row value clicked 
    rowValue = Me.aListBox.Column(0) 

    ' If row is selected return value is -1, if unselected return value 0 
    rowIsSelected = Me.aListBox.Selected(rowIndex) 

    If (rowIsSelected = -1) Then 
    result = rowValue & " selected" 
    Else 
    result = rowValue & " unselected" 
    End If 

    MsgBox (result) 

End Sub 
+0

Спасибо, это действительно изящно! Я не понимаю, почему я не мог думать об этом! – Hightower

Смежные вопросы