VB6重置Tab索引值 - 该怎么办?

4

我发现当我更改表单上几个控件的TabIndex属性时,VB6会在我背过身去后将它们重置为不同的值(不一定是旧值)。这变得相当烦人。

有没有人知道如何防止这种情况发生,或者如果无法阻止,选择这些值的方法是什么(这样我就可以与之合作而不是对抗它)?

3个回答

5

编辑:包含MarkJ的评论

您是否按正确的顺序进行编辑?如果您试图将多个控件设置为相同的索引,VB6会自动更改某些控件的TabIndex

因此,通常最好的方法是从您想成为最后一个的控件开始,并将其设置为0或1(我记不清哪个是VB6中最低的),然后按相反的顺序继续每个其他控件。


@ho1,谢谢你的回答。我认为我正在做这个,尽管很容易出错。我还试图在逻辑相关的控件组之间留下间隙,以便稍后可以插入更多的控件;我认为这就是问题所在。我试图将“go”按钮的选项卡索引设置为99,以便它始终是最后一个;但是在我的眼前,它被重置为53。当然,将其保留在该值上会在以后引起同样的麻烦。我想知道是否有一些Studio设置可以抑制这些更改? - Brian Hooper
@Brian:这么久以前了,我已经记不清了,但我有一些模糊的记忆,它们必须是连续的。换句话说,你不能留下空隙。恐怕我不知道有什么方法可以禁用它。 - Hans Olsson
@Brian:不过我想到了一个丑陋的替代方法。如果你没有使用“Tag”属性,你可以在那里设置所需的tabindex,而不是使用“TabIndex”属性。然后,在运行开始时,你可以将所有控件放入一个集合中,按“Tag”的顺序排序,然后按正确的顺序循环遍历它们,并为每个设置“TabIndex”。 - Hans Olsson
1
尽管最简单的方法实际上是从您想要成为“最后一个”的控件开始,然后按相反的顺序逐个设置为TabIndex 0。VB6会在您进行操作时自动重新编号它们,形成从0开始的连续序列。还有一个微软插件可帮助设置TabIndex值,但我个人认为它没有用处。 - MarkJ
1
当您要添加新控件时,只需将其设置为它所在的控件的值即可。IDE 将会自动将它们全部向上移动一个位置以适应新控件的加入。 - Deanna
显示剩余2条评论

3

在VB6中处理TabOrder的另一个选项是使用MZTools Add-In。它是免费的,除了一个很好的工具来自动组织控件的TabOrder之外,它还有许多其他非常有用的实用程序。


看起来很有趣。我有时间的时候会试一下。 - Brian Hooper

1

这里有一个详细的书面描述(来源)提到的程序在另一个答案中

为设置您的控件的选项卡顺序(tabindex):
  1. 选择您希望接收焦点的最后一个控件。
  2. 转到属性窗口并突出显示 tabindex
  3. 输入零 (0)
  4. 然后单击您刚才所在的控件之前要接收焦点的控件。
  5. 输入零 (0)
  6. 继续以相反的顺序进行(单击控件,输入零...)
每次将控件的 tabindex 设置为 0 时,如果存在 k 为 0 的控件,则它将增加 1,如果存在具有该 tabindex 的控件,则它也将增加 1(依此类推)。 当您到达希望接收焦点的第一个控件时,您会发现它的 tabindex 为 0,下一个您想要接收焦点的控件将是其 +1,依此类推。

(由 "vb5prgrmr" 编写,于 2002年7月25日15:20发布)。


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