我有一个vb.net窗体,包含大约15个组合框和15个文本框,以及其他几个控件。所有这些TextBoxes
和ComboBoxes
都位于面板中。原因是我需要根据用户选择/输入的内容调整控件的可见属性,因此将每个标签和控件组合在一起放在自己的面板中似乎是一种简单的方法。
我通过属性设置了标签顺序,但它不起作用。当我浏览表单时,它会跳过并且不会按照我设置的Tab键顺序。这是因为我的控件都位于不同的面板中吗?我已经将TabStop
设置为false,因为我不想要一个tabstop,我对这里发生的事情感到有些困惑。事实上我的ComboBoxes
和TextBoxes
都在他们自己的面板中这一事实阻止我的标签索引起作用。任何人都可以确认这一点或对可能发生的事情有其他想法吗?如果我创建新表单,则TabIndex
有效。
答案 0 :(得分:10)
信不信由你,面板排序绝对会影响TabIndex。我发现在多面板表单上处理标签排序的最简单方法是使用LarsTech建议的View> Tab Order。然后,一旦选项卡顺序可见,您将能够看到面板如何影响每个面板中包含的控件的整体排序。接下来,按照您希望流程的顺序,在实际面板上一次左键单击一个。您会注意到它会自动对每个面板内的控件进行按顺序排序,整个面板的排序顺序与您指定的顺序相同。完成此操作后,您可以单击每个面板中的每个控件,在给定面板中设置控件的相对Tab键顺序。
答案 1 :(得分:3)
尝试使用Visual Studio设计器中的“View - Tab Order”,然后按所需顺序单击每个容器和控件。父容器(面板)的选项卡索引很重要。
答案 2 :(得分:2)
将TabStop设置为FALSE表示当轮到Tab键顺序时它会被跳过。 通常你会将LABELs的TabStop设置为FALSE,将所有其他INTERACTIVE控件设置为TABSTOP = True(除非控件被禁用)。
不要跳过Tab到Tab。您的TabStop和Tab顺序应该类似于下面的列表。
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
答案 3 :(得分:1)
我发现你必须查看每个控件的每个选项卡索引和控件分组(组框,面板等等)。与Classic VB不同,.Net不会为您更新所有其他选项卡索引。您可以在表单,面板或其他分组类型上使用相同的选项卡索引拥有任意数量的控件。
BTW,对于发布了View - Tab Order菜单项的人,谢谢。我不知道它在那里,它极大地帮助我正确地订购了我有多个嵌套组框的表格。这是查看Tab键顺序的绝佳工具。如果您使用此功能,请务必注意每个嵌套级别。