在表单和自定义控件中设置Tab Order

时间:2012-04-09 19:00:51

标签: c# winforms

以前我有一个表单,TabOrder很简单。现在我们已将该表单中的部分控件移动到单独的.NET自定义控件中,并且我们在上一个表单中托管该自定义控件 所以现在一些按钮仍然是主要的形式,表单的其余部分在自定义控件内,它导致控件的TabOrder发生变化。 我如何解决这个问题,以便TabOrder的行为与以前相同?

感谢。

1 个答案:

答案 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索引进一步评估。