2012-04-23 89 views
0

我有一个用户控件对话框,并试图设置控件第二个按照Tab键顺序为起始选项卡。即当窗体被激活时,焦点控件实际上并不是最低标签顺序的窗体。 我尝试使用以选项卡顺序以编程方式选择第二个控件

this.SelectNextControl(this.ActiveControl, true, true, true, false); 

但“this.ActiveControl”为空当时设置这个构造函数。

任何人有想法?

+0

调用'的InitializeComponent()'第一 – Matten 2012-04-23 13:55:22

+0

我这么做了,不管怎样都不工作。 – Mystogan 2012-04-23 13:58:02

+0

不客气。此外,由于您是StackOverflow的新用户,因此我想告诉您,您可以通过查看答案旁边的勾号来获得最佳答案并接受最能帮助您的答案。在这个网站上upvote或接受的答案算作“谢谢”。 – 2012-04-23 14:49:08

回答

1

尝试,在Shown事件。当窗口实际显示时调用此事件 - 此时,所有聚焦已完成,所有控件已创建并且表单已准备就绪。构造函数或Load中可能不是这种情况。

+0

尝试这个atm,看起来是一个好方法。 – Mystogan 2012-04-23 14:12:36

+0

这确实进一步标签,但因为我试图达到控件内的控件(和显示只能从对话框访问)SelectNextControl()是跳过我的子控件。 – Mystogan 2012-04-23 14:16:00

+0

如果您实际按下TAB键或是否仅激活“顶级”用户控件,是否所有控件(即使是“嵌入”控件)都可以正确访问? – 2012-04-23 14:19:34

1

也许这将做到这一点:

tabControl1.SelectedIndex = 1; 
+0

它实际上并不是一个选项卡控件,而是一个用户控件。我一直无法找到UserControls的SelectedIndex。 – Mystogan 2012-04-23 14:07:48

+0

对不起,误会。你的问题对我来说有点不清楚。我明白你想以编程方式更改标签。 – 2012-04-23 14:20:07

+0

Np,谢谢你的回答:) – Mystogan 2012-04-23 14:33:10

0

尝试

tabControl1.SelectTab(1); 

tabControl1.SelectTab("tabPage2"); 

两种版本,InitializeComponent()后,立即在构造函数中调用时。 (测试)编辑(后您的澄清)


使这个(现在是第二)控制第一Tab键顺序和先前的控制(现在是第一个),最后在标签订购。由于按Tab键在所有控制器中循环,在到达最后一个控制器后自动重新开始,您应该获得所需的行为。

 
+---+ +---+ +---+ +---+ 
| 4 | | 1 | | 2 | | 3 | 
+---+ +---+ +---+ +---+ 
+0

它不是一个TabControl,所以这不会很不幸。 – Mystogan 2012-04-23 14:17:41

+0

为了澄清,更改了您的问题的标题。 – 2012-04-23 14:18:43

+0

谢谢,感谢。 – Mystogan 2012-04-23 14:21:33