Microsoft Access 如何在失去焦点时阻止滚动的文本字段返回顶部(如滚动到顶部)

Posted

技术标签:

【中文标题】Microsoft Access 如何在失去焦点时阻止滚动的文本字段返回顶部(如滚动到顶部)【英文标题】:Microsoft Access how to stop scrolled text field from returning to top (like scroll-to-top) upon losing focus 【发布时间】:2018-12-08 06:00:32 【问题描述】:

我在 Win 10 中使用 Access 2016,所有内容均已更新且最新。我有一个带有垂直滚动条的标准 Access TextBox 的表单。一切都很好,除非我向下滚动然后单击该字段以读取来自其他来源的信息或其他任何内容,因为滚动的文本会直接回滚到顶部,并且我必须向下滚动回原来的位置才能恢复工作。这既浪费时间又打乱了我的思路。

我没有看到任何属性或方法可以锁定“插入符号”或以其他方式禁用这种烦人的行为。我还研究了我能想到的所有地方,但似乎没有人知道该怎么做。

我什至构建了自己的滚动按钮,效果很好,但如果我添加或删除文本,尝试跟踪文本位置会变得很复杂。所以,如果有人在 VBA/VB6 中有一个很好的自定义滚动条,我很乐意看到它。

感谢您的宝贵时间和建议。我很感激。

KC 的肯特。

【问题讨论】:

AFAIK,无法控制。 可能使用缩放框查看/编辑,查看accessmvp.com/TomvanStiphout/ZoomBox.htm 对于只读解决方案,您可以使用未绑定的 Access 网络浏览器控件,它可以很好地保持您的位置,并通过 VBA 同步其内容。 【参考方案1】:

设置和恢复选中的位置:

Option Compare Database
Option Explicit

Private LastPosition    As Long 

Private Sub YourTextbox_LostFocus()

    LastPosition = Me!YourTextbox.SelStart

End Sub

Private Sub YourTextbox_GotFocus()

    Me!YourTextbox.SelStart = LastPosition
    Me!YourTextbox.SelLength = 0

End Sub

Private Sub Form_Current()

     ' Reset last position.
     LastPosition = 0

End Sub

它将滚动文本框以使该行在左至顶行可见。

【讨论】:

嗯,到目前为止,这些建议都没有令人满意的效果,尽管我很欣赏你的意见。令人惊讶的是,还没有人遇到并解决过这个琐碎的问题。 不知道。我上面的代码已经过测试 - 有点令我惊讶 - 对我来说效果很好。 谢谢你,古斯塔夫。您确实给了我一个想法,我已将其合并到自定义滚动条中。它似乎只是我想要的,但我仍在解决它。如果它确实成功,我将在此处发布代码。再次感谢大家的帮助。 @Gustav:你确定这段代码“停止文本字段返回顶部失去焦点”。当我测试时,它确实修复了文本字段中文本的位置,但只有 after 它重新获得焦点,而不是 on 失去它。 @kent-hartland 你的解决方案是什么?

以上是关于Microsoft Access 如何在失去焦点时阻止滚动的文本字段返回顶部(如滚动到顶部)的主要内容,如果未能解决你的问题,请参考以下文章

当 TextEditor 失去焦点时如何得到通知?

解决如何在点击按钮时,不触发input的失去焦点事件

在 ReactJS 中使用 state 和 Function 组件时如何使输入不失去焦点?

当我触摸其他东西时如何让我的 EditText 失去焦点?

失去焦点时如何破坏无模式对话框?

输入在vue中失去焦点时如何执行功能