首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在多个GroupBoxed控件之间移动TabStop (失去焦点)?

如何在多个GroupBoxed控件之间移动TabStop (失去焦点)?
EN

Stack Overflow用户
提问于 2021-11-11 08:29:24
回答 1查看 47关注 0票数 1

我的VB.NET应用程序中的键盘控制和TabStops似乎有问题。

我已经在这里和网络上搜索过了,发现了一些相关的主题(不是1000%相同的问题),我在网络上找到的一些解决方案对我的情况没有帮助。

我不确定我的问题是否主要与分组框的使用有关,是否可以解决。作为控件设置的粗略描述,请参阅此处的示意图概述:

GroupBox1____ GroupBox2_ GroupBox3

Control1_Control4_ Control7

Control2_Control5_ Control8

Control3_Control6_ Control9

我已经按顺序设置了分组框和控件的TabIndex,以便Tab可以在Control1和control9之间循环。当窗体加载时,我通过代码将焦点放在其中一个控件上,以便将初始焦点放在一个控件上。这是没有任何问题的。同样,使用Shift-Tab向后循环效果也很好。

现在的问题是,当用户意外地经过最后一个控件时,例如,Control9有焦点,他按TAB或Control1有焦点,他按Shift-TAB,控件失去焦点,但它不会跳到使用TabStop=True的下一个最低或最高的TabIndex控件。

基本上,它进入没有控件具有焦点的状态,并且按TAB或Shift-TAB不执行任何操作。(我希望它以循环的方式循环)

唯一的方法是用鼠标点击任何控件来重新获得焦点和键盘控制。不确定这是一个bug还是一个特性。

我知道VB.NET将每个分组框作为一组单独的控件来处理,但不确定这是否与我的问题有关。

此外,表单上还有一些其他控件,它们的TabIndex编号较高,但TabStop设置为False (大多数控件无论如何都不是输入控件,例如一些图片框或标签)。这通常不会影响我的理解。

它们是什么类型的控件与此相关吗?(例如,Control9是一个复选框,而COntrol1是一个单选按钮控件)

我已经尝试了一种变通方法,例如捕捉一个按键事件或失去焦点事件,通过代码强制将焦点重新放在顺序中的下一个控件上,但由于某些原因,我无法通过编程来实现,因为在使用TAB或Shift-Tab时,一些尝试过的事件似乎不会触发。

有没有人熟悉这个问题,并对如何从Control9移动到Control1有建议?(或者在按Shift-TAB时从Control1切换到Control9 )?

EN

回答 1

Stack Overflow用户

发布于 2021-11-11 18:10:32

该问题是由一个SplitContainer控件引起的,该控件包含带有第一个面板中的控件的分组框,以及在表单加载事件期间添加到第二个面板中的CEFSharp浏览器插件。

最初对我来说并不是那么明显,因为浏览器不会显示在VS设计器中,并且只在运行时加载。

浏览器插件在获得焦点后劫持了TabStops。

解决方案是在启动浏览器插件并将其添加到第二个面板后,通过Form Load事件中的代码将CEFSharp浏览器插件的TabStop属性更改为False。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69925223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档