MS Access 确定单击事件单击的列表框项目

Posted

技术标签:

【中文标题】MS Access 确定单击事件单击的列表框项目【英文标题】:MS Access Determine the listbox item clicked on click event 【发布时间】:2014-10-22 21:18:01 【问题描述】:

我在 MS Access 中有一个 ListBox,并希望找到最佳方式来获取在单击事件发生时选择/取消选择的列表项。

它比遍历选定的项目要复杂一些,因为列表框已经加载了一些选定的项目。我试图找到在点击事件发生时受影响的单个项目。

因此,如果用户在上面的示例中单击“Col2-How”,我将如何确定单击的记录,或者,如果取消选择第一条记录,我需要知道。有什么线索吗?

我唯一能想到的是使用内存中的对象来维护突出显示的行的列表并在单击时回溯到选定的项目以确定增量?

【问题讨论】:

您唯一能想到的可能非常接近。另一个具有 visible=false 的列表框,并且相同的行源可能更容易:然后您可以在 listbox_click 中使用循环(对于可见的)来确定两者之间的差异,并更新不可见中更改项的状态一。 【参考方案1】:

您可以使用 AfterUpdate 事件,例如列表框的名称是“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

【讨论】:

谢谢!这真的很优雅!我不明白为什么我想不到!

以上是关于MS Access 确定单击事件单击的列表框项目的主要内容,如果未能解决你的问题,请参考以下文章

Access 2007 列表框:如何以编程方式单击?

Access 2007列表框:如何以编程方式单击?

使用按钮从组合框中将值传递给文本框单击 MS ACCESS

捕获在MS Access中单击的标签的标题

MS ACcess 使文本框在按钮单击时可见

如何在 Ms Access 的组合框中单击按钮并打开与值相关的表单?