选项卡索引在面板中无法与控件一起使用?

10

我有一个 VB.NET 的窗体,里面有大约 15 个 ComboBox 和 15 个 TextBox,还有其他控件。所有这些 TextBoxesComboBoxes 都位于面板中。原因是我需要根据用户选择/输入来调整控件的可见属性,因此将每个标签和控件分组放置在自己的面板中似乎是一种简单的实现方法。

我已通过属性设置了 Tab 顺序,但它不起作用。当我在窗体上使用 Tab 键时,它会跳过某些控件并不按照我所设置的 Tab 顺序进行。这是因为我的控件都位于单独的面板中吗?我已将 TabStop 设置为 false 对于我不想要的任何控件,但我对发生了什么有点困惑。似乎我的 ComboBoxesTextBoxes 各自位于自己的面板内阻止了我的 Tab 索引工作。有人可以证实这一点或者有其他的想法吗?TabIndex 在我创建新窗体时有效。


1
通常只需设置TabStop和TabIndex属性即可。如果不起作用,请检查表单中的任何事件,可能会干扰控件的聚焦。 - LarsTech
1
谢谢你的建议,但是目前我的代码中没有任何影响控件焦点的内容。 - TypeM1smatch
使用我下面绘制的表格作为模板...... 使用您的TABSTOPS和TABORDER填充它,并尝试列出表单上的所有控件。 - Zeddy
4个回答

15
相信或不相信,面板的排序绝对会影响TabIndex。在处理多面板表单上的Tab序列时,我发现最简单的方法是使用LarsTech建议的“视图> Tab顺序”选项卡。然后,一旦Tab序列可见,您将能够看到面板如何影响每个面板中包含的控件的整体排序。接下来,按照您希望流程进行的顺序依次单击实际面板。你会注意到它会自动对每个面板内的控件进行子排序,并且总体面板排序按照您指定的顺序进行。完成这些操作后,您可以单击每个面板内的每个控件,以设置给定面板内控件的相对Tab顺序。

5
尝试在Visual Studio设计器中使用“查看-选项卡顺序”,并按照您想要的顺序单击每个容器和控件。父容器(面板)的选项卡索引很重要,请注意。

1
@EricJ 请尝试在一个新的小项目中重新创建这个问题。如果您能够重新创建它,请将其编辑到您的帖子中。 - LarsTech
正确答案是:“父容器(面板)的选项卡索引很重要”。 - fedeteka

3

将TabStop设置为FALSE意味着当其在Tab顺序中轮到它时,它将被跳过。 通常情况下,您会将标签的TabStop设置为FALSE,而将所有其他交互式控件的TABSTOP设置为TRUE(除非该控件被禁用)。

不要从一个Tab跳到另一个Tab。您的TabStop和Tab Order应该像下面的列表一样。

Name         Parent        TabOrder        TabStop
=======================================================
Form         -             0               -
TabStrip1    Form          1               True
Tab1         TabStrip1     2               True
Label1       Tab1          3               False
Textbox1     Tab1          4               True
Label2       Tab1          5               False
Combo1       Tab1          6               True

Tab2         TabStrip1     7               True
Label3       Tab2          8               False
Textbox2     Tab2          9               True
Label4       Tab2          10              False
Combo2       Tab2          11              True

Tab3         TabStrip1     12               True
Label5       Tab3          13               False
Textbox3     Tab3          14               True
Label6       Tab3          15               False
Combo3       Tab3          16               True

1
谢谢你的建议,Zaf。我觉得你说的有道理。今晚我会试一试,看看我在哪里偏离了轨道。 - TypeM1smatch

2
我发现你需要查看每个控件和控件组(组框,面板等)的所有选项卡索引。与Classic VB不同,.Net不会为您更新所有其他选项卡索引。您可以在表单、面板或其他分组类型上拥有任意数量具有相同选项卡索引的控件。
顺便说一下,对于那些发布了“查看-选项卡顺序”菜单项的人,谢谢。我不知道它在那里,但它帮助我正确地排序了一个具有多个嵌套组框的表单。这是一个用于审查选项卡顺序的绝佳工具。如果您使用此工具,请确保注意每个嵌套级别。

顺便说一句,对于那些发布了“查看-选项卡顺序”菜单项的人,谢谢你们。我不知道它在哪里,但它帮助我很大地正确排序了一个有多个嵌套组框的表单。这是一个优秀的工具,用于审查选项卡顺序。如果您使用此工具,请确保注意每个嵌套级别。同样非常好用! - fedeteka

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