在MS Access 2007中隐藏具有焦点的控件

4

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

3个回答

3

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

Me.SomeControlThatIsNotTheCombobox.SetFocus

关于评论

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

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

+1 使用一个透明背景的小文本框,就不会看到焦点的变化了。 - Matt Donnan
但是我应该在什么时候将焦点设置在新的小文本框上?在单击标签时隐藏它吗? - user1175126
你是要隐藏标签(label)、下拉框(combobox)还是两者都要隐藏? - Fionnuala
点击特定标签(始终可见)时,我会隐藏下拉框。我认为当单击标签时,可能可以将焦点设置在标签本身上,以使下拉框失去焦点? - user1175126
我尝试将这段代码放在标签的"on click"事件中:"Me.label1.setfocus",但是它没有起作用。setfocus对象无效。 - user1175126
您不能将焦点设置到无法接收焦点的对象,例如标签。文本框是理想的选择。我发布的代码是经过测试的。为什么您不想使用命令按钮执行此操作?当单击命令按钮时,它会接收焦点,因此不需要花哨的技巧。 - Fionnuala

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

-1

与其将焦点设置到任何特定控件上,在未来表单上的控件发生更改时可能会引起维护问题,不如模拟按下Tab键,然后焦点将移动到选项卡顺序中的下一个对象。

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

请注意,DoEvents 是必要的,以允许 Tab 的处理。

同样的问题又来了:我在哪里放置这段代码?我尝试将它放在隐藏下拉框的标签的“单击事件”中,但是我得到了同样的错误。无法隐藏处于焦点状态的控件。 - user1175126
SendKeys几乎从来不是一个好主意。它在Vista上无法正常工作,需要进行一些调整,我想在Windows 7上也是一样的。 - Fionnuala
是的。最终我意识到这样做行不通。也许我应该使用一个命令按钮,而且我不能隐藏一个具有焦点的控件。现在我正在使用相同的组合框,在标签点击时显示不同的记录。 - user1175126

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接