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

问题描述

| 所以我从0开始,为窗体上的控件定义了tabindex,但是在运行时,一切都搞砸了。形式有点复杂。它具有水平和垂直拆分器和面板,组框以及一些较旧的VB 6.0 activeX控件,它们内部是一个Tree控件。即使我以编程方式执行此操作并读取Previewkeydown eventg并说它是否为TAB,然后control2.Focus()仍然无法正常工作。好沮丧有什么想法吗? ..表格上也有不需要标签标签,所以我为它们的索引定义了0。     

解决方法

您如何设置? 如果您处于Visual Studio中且表单处于设计视图中,请选择“视图”->“选项卡顺序”,然后按所需顺序单击每个项目。 通常对我有用。     ,原因是控件位于不同的容器中。假设您具有panel1.TabIndex = 0和panel2.TabIndex = 1,然后在panel2中,textBox1.TabIndex = 0,在panel1中,textBox2.TabIndex =1。在运行时,textBox1在textBox2之前排在前面,因为其面板排在第一位! 正如kerry所说,使用view-> tab order可以查看Tab订单的完整层次结构。     ,请按照以下步骤操作: 使用“视图”>“ TabOrder”实用程序或直接从属性窗口将“ 0”属性设置为窗体或容器中的DIRECT CHILD容器和控件。完全忽略容器的“ 1”属性,即使它非常重要,该属性也默认设置为false。 对每个容器重复步骤1。     ,我之所以提及这一点,是因为我在stackoverflow上找到的任何winforms选项卡顺序线程中都没有看到它。 如果您有多个面板,则可以通过单击“面板”并转到属性来更改面板选项卡的顺序,然后将TabIndex更改为所需的值。这将允许您按所需顺序在面板之间导航。然后在每个面板中,按照上面列出的建议步骤使用“视图”>“选项卡顺序”,然后以要设置的顺序单击每个单元格。