如何突出显示 MS-Access 列表框行?

Posted

技术标签:

【中文标题】如何突出显示 MS-Access 列表框行?【英文标题】:How can I show a MS-Access listbox row highlighted? 【发布时间】:2010-05-25 10:46:08 【问题描述】:

我正在使用 MS-Access 2007。我希望通过 VBA 突出显示多列列表框的第一行。 我试过Me.LstSample.Selected(0) = True,但它不起作用。

代码:

Private Sub LstStation_AfterUpdate()
With Me.LstSample
    If IsNull(Me.LstStation) Then
        .RowSource = ""
    Else
        .RowSource = _
            "SELECT * FROM Samples WHERE S='" & Me.LstStation.Value & "'"
    End If
    Call .Requery
    If Not IsNull(Me.LstStation) Then
      Me.LstSample.Selected(0) = True
    End If
End With
End Sub

【问题讨论】:

它应该可以工作。你把线放在哪里了,什么活动?您可以单步执行以查看事件是否触发?请注意,不要使用表单打开事件,因为控件尚未初始化。 我把它放在另一个列表框的更新后。如果用户在此(第一个)列表框中选择了一行,则在 AfterUpdate 事件代码中我重置第二个列表框的“RowSource”属性,执行“重新查询”,然后执行我提到的代码。 编辑您的帖子以包含更新后事件代码。您所描述的内容应该可以正常工作,所以我猜您遗漏了某些内容,或者您​​的代码中有一个小错误。 我想它不是“不是空的”。您是否尝试过注释掉 If 行? 【参考方案1】:

我完全剥离了代码并重置了控件的属性,现在它可以正常工作了!

我正在弄清楚它们之间的区别,并会告诉大家。

【讨论】:

我终于找到了。因为我将 ColumnHeads 属性设置为 True,所以第一行包含标题,所以为了突出显示第一行(数据)行,我必须使用 LstSample.Selected(1)=True 而不是 LstSample.Selected(0)=True跨度> 【参考方案2】:

尝试改变

Me.LstSample.Selected(0) = True

Me.lstSample.SetFocus
Me.lstSample.ListIndex = 0

我不确定为什么原始代码不起作用,但我倾向于使用 ListIndex 属性而不是 Selected 属性。

【讨论】:

【参考方案3】:

我总是设置列表框的值:

  Me!lstMyListBox = Me!lstMyListBox.ItemData(0)

【讨论】:

以上是关于如何突出显示 MS-Access 列表框行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在泥浆中突出显示选定的列表项?

如何在 SwiftUI 中清除列表项上的默认突出显示灰色?

如何在单击另一个视图(即按钮)时突出显示自定义列表视图

如何以html格式动态突出显示一些单词

单击上一个活动的项目(列表视图)后如何突出显示下一个活动的项目(列表视图)?

React-native:如何在触摸时突出显示平面列表项