【问题标题】:i can't scroll my form when my listbox has a focus当我的列表框有焦点时,我无法滚动表单
【发布时间】:2017-02-15 03:37:41
【问题描述】:

在 Access 2007 表单中,如果我的任何列表框有焦点,我无法向上或向下滚动表单。为此,我必须将焦点移到除列表框之外的任何其他控件,顺便说一下,我所有的列表框上只有 4 个项目,没有滚动条,我只需要使用鼠标滚轮向上或向下滚动即使我的列表框有焦点,我的整个表单也是如此。

我找到了以下用于禁用列表框滚动的代码,但我无法对其进行测试,因为我在列表框事件列表中看不到任何名为 (mousewheel) 的事件。

Private Sub ListBox1_MouseWheel(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles ListBox1.MouseWheel
Dim disable As HandledMouseEventArgs = e
disable.Handled = True
End Sub

另外我不知道该代码是否会强制我的表单使用它的滚动而不是列表框滚动。有什么建议吗?

【问题讨论】:

  • 除非我弄错了,那应该是 VB.NET 代码;不会在 VBA 中飞行
  • 那么还有其他选择吗??
  • 我不知道...不是 Access 用户,而且我记得,Access 表单与其他 VBA 表单有点不同。只是想评论一下为什么您在使用该特定代码时遇到问题。

标签: ms-access ms-access-2007 vba


【解决方案1】:

这是预期的行为。从 MS 的角度来看,他们希望人们使用他们的软件(即使是您的软件在他们的内部运行)获得一致的体验。访问有点过于原始,无法覆盖控制行为。 如果用户迷路了,您可能有一些方法可以重新设计表单(我个人讨厌滚动表单 - 我更喜欢一种向导方法,其中一次向用户询问少量问题,并且用于显示信息的表单将信息,因此用户不会被数据淹没)。

【讨论】:

    【解决方案2】:

    这个想法是将焦点从列表框移到文本框。

    1. 将文本框放在列表框附近并按如下格式设置:

      • 在“数据”选项卡下:Enabled = Yes; Locked = Yes
      • 在“格式”选项卡下:Width = 0

      必须启用文本框才能获得焦点。 “Locked = Yes”也应该防止任何进入。现在将它放在列表框旁边用作文本框控件获得焦点时滚动的占位符

    2. 接下来将“点击”事件挂钩到 Detail。示例:

      Private Sub Detail_Click()
      
          select case(me.ActiveControl.Name)
              case "your list box name":  Me.myDummyTextbox.SetFocus
              '
              ' add more case as needed 
              '
          end select
      End Sub
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 2016-01-27
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      相关资源
      最近更新 更多