以前我只有一个表格,TabOrder 很简单。现在我们已经将该表单中的部分控件移动到单独的 .NET 自定义控件中,并且我们将该自定义控件托管在前一个表单中所以现在一些按钮仍然是主表单,而表单的其余部分在里面自定义控件,它导致控件的 TabOrder 发生变化。我该如何解决这个问题,以便 TabOrder 的行为与以前一样?
谢谢。
让我扩展我的评论,因为我只是想象当涉及控制容器时,标签顺序可能会令人困惑。
假设我们有六个按钮(A、B、C、D、E 和 F):
Z
A B | C D | E F
(我知道这是一个糟糕的图表,但我不能快速而肮脏地做一个漂亮的图表)
A、B、E 和 F 直接在表单的表面上。C 和 D 包含在名为 Z 的用户控件中。
如果您希望制表符顺序遵循字母顺序,您可以设置TabIndex
如下值:
A = 0
B = 1
Z = 2
E = 3
F = 4
C = 0
D = 1
控件容器的选项卡相对于内部的控件。该算法相当简单:当按下 TAB 时,框架会在序列 (*) 中查找下一个控件。所以A标签到B和B标签到Z。Z是一个容器,所以焦点转到容器中的“第一个”子C.C标签到D.D标签,从我们离开的地方继续E.E标签到F . F tabs 离开它的容器,这是顶级容器所以我们重新开始,F tabs 到 A。
(*) 序列中可能存在间隙,如果有两个项目具有相同的 TabIndex,则通过它们的 Z-Order 索引进一步评估它们。