【问题标题】:hiding a control which has focus in ms access 2007隐藏在 ms access 2007 中具有焦点的控件
【发布时间】:2012-03-19 20:52:17
【问题描述】:

我在表单上有一个组合框。单击特定标签应隐藏此组合框。问题是如果组合框有焦点,单击隐藏此组合框的按钮会出错。如何解决此运行时错误?

【问题讨论】:

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


    【解决方案1】:

    移动焦点。如有必要,创建一个非常小的控件来接收焦点。

    Me.SomeControlThatIsNotTheCombobox.SetFocus
    

    回复评论

    请注意,此标签与控件无关。

    Private Sub Label1_Click()
       Me.Text1.SetFocus
       Me.Label1.Visible = False
    End Sub
    

    【讨论】:

    • +1 使用带有透明背景的小文本框,没有人会看到焦点变化
    • 但是我什么时候应该将焦点放在新的小文本框上?点击应该隐藏它的标签?
    • 您是在隐藏标签、组合框还是两者兼而有之?
    • 点击特定标签(始终可见)我隐藏了组合框。我想我可以在单击标签时对标签本身设置焦点,从而使组合框失去焦点?
    • 我尝试将它放在标签的点击事件中:“Me.label1.setfocus”,但它不起作用..对象 setfocus 无效..
    【解决方案2】:

    我知道这是一篇旧帖子,但我最近遇到了一个类似的问题(这篇帖子出现在前 4 或 5 个结果中)。如果您尝试禁用的控件是子窗体上的第一个控件,请尝试将其选项卡索引设置为 1,而不是 0。一旦子窗体获得焦点,其上的第一个控件也会这样做。我试图在 Form_Open 事件期间设置它,这解决了它。

    【讨论】:

      【解决方案3】:

      与其将焦点设置到任何特定控件,如果表单上的控件发生更改,将来可能会导致维护问题,如果您模拟 Tab 的按键,那么焦点将移动到 Tab 顺序中的下一个对象。

      SendKeys "{TAB}"
      DoEvents
      Me.Command4.Visible = False
      

      注意 doevents 是允许处理 Tab 所必需的。

      【讨论】:

      • 同样的问题:我把这段代码放在哪里?我尝试将它放在隐藏组合框的标签的单击事件中。我得到了同样的错误。无法隐藏焦点控件。
      • SendKeys 几乎从来都不是一个好主意。它在 Vista 上无法正常工作,而我想在 Windows 7 上也是如此。
      • 是的。最后我意识到这是行不通的。我可能应该使用命令按钮,但我无法隐藏具有焦点的控件。我现在使用相同的组合框在点击时显示不同的记录的标签。
      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多