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