2012-04-09 84 views
1

以前我有一个窗体,TabOrder很容易。现在我们已经将这种形式的控件的一部分移动到一个单独的.NET自定义控件中,并且我们将这个自定义控件托管在以前的形式中 因此,现在一些按钮仍然是主窗体,窗体的其余部分是内部的该自定义控件和它导致控件的TabOrder中的更改。 我该如何解决这个问题,使TabOrder的行为与以前一样?在窗体和自定义控件中设置TabOrder

谢谢。

+1

当您没有子控制时,您可以使用同样的方法修复它。使用表单编辑器中的Tab Order小部件。或者,您可以手动手动设置每个控件的TabIndex属性。 – Tergiver 2012-04-09 19:28:23

回答

2

让我展开我的评论,因为我只是想象当涉及控件容器时,tab顺序可能会如何混淆。

比方说,我们有六个按钮(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选项卡是它的容器,它是顶层容器,因此我们再次重新开始,F选项卡为A.

(*)序列中可能存在间隙,并且如果有两个项目具有相同的TabIndex ,他们进一步通过他们的Z-顺序指数进行评估。

+0

谢谢,我学到了。好例子。为了解决我自己的问题,我使用了TabStop属性,并将其设置为False,以使那些我不想要的选项卡。 – Bohn 2012-04-09 20:11:18

相关问题