可能是TabIndex无法正常工作的可能原因

时间:2011-05-26 13:53:51

标签: c# winforms

所以我从0开始为我的表单上的控件定义tabindex但是在运行时它都搞砸了。形式有点复杂。它有水平和垂直分割器和面板,组框和一些较旧的VB 6.0 activeX控件,它们是一个Tree控件。即使我以编程方式执行并读取previewkeydown eventg并说如果它是TAB然后control2.Focus()它仍然工作错误。太令人沮丧了。有什么想法吗? ..表格上还有标签,不需要标签,所以我为它们的索引定义了0。

4 个答案:

答案 0 :(得分:16)

你是如何设置它的? 如果您在视觉工作室中使用设计视图中的表单选择视图 - >选项卡顺序,然后按所需顺序单击每个项目。

通常适合我。

答案 1 :(得分:10)

原因是控件位于不同的容器中。假设你有panel1.TabIndex = 0和panel2.TabIndex = 1,那么在panel2中,textBox1.TabIndex = 0,在panel1中,textBox2.TabIndex = 1.在运行时,textBox1位于textBox2之前,因为它的面板首先出现! / p>

正如克里所说,使用view->标签顺序查看标签顺序的完整层次结构。

答案 2 :(得分:0)

请遵循以下步骤:

  1. 使用“视图”>“ TabOrder”实用程序或直接从属性窗口中,将TabIndex属性设置为窗体或容器中的DIRECT CHILD容器和控件。完全忽略容器的TabStop属性,即使它非常重要,该属性也默认为false。
  2. 对每个容器重复步骤1。

答案 3 :(得分:0)

之所以提及这一点,是因为我在stackoverflow上找到的任何winforms选项卡顺序线程中都没有看到它。

如果有多个面板,则可以通过以下方式更改面板选项卡的顺序:单击“面板”,转到“属性”,然后将TabIndex更改为所需的任何值。这将允许您按所需顺序在面板之间导航。然后在每个面板中,按照上面列出的建议步骤使用“视图”>“选项卡顺序”,然后按要设置的顺序单击每个单元格。