我有一个包含不同页面的标签控件。使用此选项卡控件启动表单时,选项卡会丢失,内部页面将获得所有屏幕焦点。选项卡控件用于导航,因此用户将以这种方式迷路。
有没有办法让屏幕上的标签可见,而不只是将屏幕尺寸调整为更小?
期望的结果:
+--------------------+
| Tab1 | Tab2 | Tab3 |
+--------------------+
| Name: ______ |
实际屏幕:
^
+--------------------+ |_|
| Name: ______ | | |
答案 0 :(得分:4)
缩小选项卡控件的大小(正如您自己发现的那样),但是有另一种解决方法:
OnOpen
或OnLoad
事件中,在命令按钮上调用.SetFocus
方法SendKeys
(我知道,我知道......)选项卡到Tab Control 示例代码:
Private Sub Form_Open(Cancel As Integer)
Me.HiddenCommandButton.SetFocus
SendKeys "{Tab}"
End Sub
上述步骤的说明:
杂项备注:根据提问者的要求,我将在答案中加入一些评论:
@mwolfe :关于SendKeys的最后一个注释......它在UAC下爆炸了 VISTA / Win7的。如果你能活下去 键盘焦点,我会说离开 完全发送出去。如果你需要它 你要么想要添加错误 处理忽略错误(如果你 不介意你的一些用户输了 键盘焦点功能)或 绕过SendKeys并使用WinAPI 直。卡尔彼得森提供了一个 交钥匙解决方案: vb.mvps.org/samples/SendInput我有 从未使用它所以不能评论它 可靠性,但卡尔是微软 MVP让他获得了一定的信誉。
@Roman Glass :mwolfe02我相信你这个方法会起作用,但是 重点对我和一些用户至关重要 在Windows 7下工作。我会的 暂时解决这个问题 关于用户反应。 不过我认为你的解决方案 值得一试。最后我有 与WinAPI交谈。也许你可以 编辑你的答案,包括这个 直接评论。谢谢!
对于将来可能会找到此答案的人,请注意上述步骤5仅在您需要使用标签控件来接收键盘焦点时才需要(这是原始提问者的关键要求)。如果你没有它,我建议你这样做。
更新:正如David Fenton在评论中指出的那样,您可以使用Ctl
+ Tab
/ Ctl
+ Shift
+ {{ 1}}在标签之间来回移动。这与大多数标签界面(例如浏览器)一致,并且无需使用Tab
。
答案 1 :(得分:0)
嗯,我知道我只使用了Tab控件一次或两次 - 但是在执行/加载表单时,表单上没有出现问题。当然,除了表单的详细信息部分之外,我从来没有在任何地方使用它,但是我要检查看看野兽是否已经将它的启用或可见属性(如果适用)设置为否。当然,我可能是错的 - 它发生了,我渴望在它发生时学到新的东西。 :)
答案 2 :(得分:0)
我不知道我理解这个问题,但是在评论中,你说Access不允许你将焦点设置到标签控件,但你可以将焦点设置到标签页:
Me!ctlTab.Pages(N).SetFocus
...其中N是您要设置焦点的标签页的索引),或者使用:
Me!pgeTabPageName.SetFocus
这两项工作都可以将焦点设置到标签页。
你说你想把焦点设置到标签控件,但我无法弄清楚你为什么要这样做。选项卡控件本身没有可以获得焦点的元素 - 只有其Pages集合的成员才能获得焦点。
同样,我建议你因为其他原因把自己画成一个角落而且没有解决方案。因此,你必须弄清楚如何避免陷入这个不可解决的问题。我根本无法理解您对问题的解释,以便能够提供解决方案,但我怀疑没有办法通过不同的方法解决问题。