ms-access - MSAccess - 清除多选列表框,移动到顶行,未选中
问题描述
我在表单上有一组多选列表框,过滤子表单上的记录。在我的实现中,我在每个列表的顶部都有一个 Null 记录来表示“全选”。它按需要工作。
我在列表框集合旁边有一个“清除过滤器”按钮,用于取消选择所有列表框中的任何选定选项。也有效,除了这种方法让我在每个列表的底部。
我的偏好是回到每个列表框的顶部(到 Null 行),而不实际选择该行。在取消选择循环之后添加 3 行可以让我到达需要的位置,但感觉很笨拙。
有没有更好的方法来达到同样的结果?
Private Sub btnClear_Click()
Dim i As Integer
'Step thru the listbox options and de-select
For i = 0 To Me!lstState.ListCount
Me!lstState.Selected(i) = False
Next i
Me!lstState.SetFocus
Me!lstState.ListIndex = 0
Me!lstState.Value = ""
'...5 more list boxes not shown here
Forms!MainForm!Accounts_subform.Form.FilterOn = False
End Sub
解决方案
您正在向前迭代,因此您最终处于底部是合乎逻辑的。
向后迭代以在顶部结束(并确保选择第一个项目以确保您最终在最顶部的项目):
Dim i As Long 'Selected expects a long, avoid casting for each property call
With Me!lstState
.Selected(0) = True
For i = .ListCount To 0 Step -1
.Selected(i) = False
Next i
End With
推荐阅读
- elasticsearch - 弹性搜索 - 按时差排除记录
- ios - 如何为两个不同的pickerviews(swift4)调用2个不同的数组
- java - 如何在请求开始时创建 Context 对象的条目并在请求结束时检索它?
- javascript - React.js - 单击按钮时移动组件
- javascript - Codeigniter - 编码、解码 JSON
- textures - 虚幻引擎 4 在导入时扭曲了一些纹理
- azure - Azure 应用程序网关 DNS
- javascript - ES6 休息参数代码不起作用
- ios - 如何在 Swift 中将 Speed 设置为“moveTo”方法?
- mysql - UNION 或 JOIN 4 个表,每个表都有内部连接