TabIndex无法正常工作

时间:2012-06-15 14:08:28

标签: c# .net winforms

我有一个Windows窗体应用程序。在表单上有三个groupbox。 每个组框都包含一些控件。请看图像。 form

有一个groupbox“flag”,其中包含几个复选框。 “flag”位于“groupbox1”中。 我使用Tab键来浏览每个控件,但它不适用于“flag”中的复选框。我确实为每个控件设置了正确的tabindex。

它适用于文本框和按钮,但适用于复选框。

为什么呢?谢谢你的帮助。

修改

 // groupBox2
        // 
        this.groupBox2.Controls.Add(this.pictureBox10);
        this.groupBox2.Controls.Add(this.pictureBox9);
        this.groupBox2.Controls.Add(this.pictureBox8);
        this.groupBox2.Controls.Add(this.pictureBox7);
        this.groupBox2.Controls.Add(this.chkStoplight);
        this.groupBox2.Controls.Add(this.lblStoplight);
        this.groupBox2.Controls.Add(this.chkIsCount);
        this.groupBox2.Controls.Add(this.chkExceptionFlag);
        this.groupBox2.Controls.Add(this.chkIsActive);
        this.groupBox2.Controls.Add(this.lblIsActive);
        this.groupBox2.Controls.Add(this.lblExceptionFlag);
        this.groupBox3.Controls.Add(this.lblIsCount);
        this.groupBox2.Location = new System.Drawing.Point(16, 201);
        this.groupBox2.Name = "groupBox2";
        this.groupBox2.Size = new System.Drawing.Size(321, 70);
        this.groupBox2.TabIndex = 10;
        this.groupBox2.TabStop = true;
        this.groupBox2.Text = "Flags";

        // 
        // chkStoplight
        // 
        this.chkStoplight.AutoSize = true;
        this.chkStoplight.Location = new System.Drawing.Point(44, 25);
        this.chkStoplight.Name = "chkStoplight";
        this.chkStoplight.Size = new System.Drawing.Size(15, 14);
        this.chkStoplight.TabIndex = 0;
        this.chkStoplight.UseVisualStyleBackColor = true;

        In the property, I found TabStop is true for chkStoplight.

2 个答案:

答案 0 :(得分:9)

对于 System.Windows.Forms.GroupBox

您应该确保GroupBox flag具有适当的TabIndex集。

来自MSDN - How to: Set the Tab Order on Windows Forms

  

此外,默认情况下,GroupBox控件具有自己的TabIndex   值,这是一个整数。 GroupBox控件本身不能拥有   专注于运行时。因此,GroupBox中的每个控件都有自己的控件   十进制TabIndex值,以.0开头。当然,作为TabIndex   一个GroupBox控件的增量,其中的控件将是   相应地增加。如果您将TabIndex值从5更改为6,   自动组中第一个控件的TabIndex值   更改为6.0,依此类推

此外,请确保GroupBox flag的{​​{3}}属性未设置为false。我相信假是默认的。

对于 System.Windows.Controls GroupBox

确保已设置TabStop属性。这也默认为false。

<击> 更新:您的所有控件似乎都已添加到groupBox3。您应该确保每个都只添加到其包含的组框中。例如,checkBox1checkBox2checkBox3都应添加到flaggroupBox1本身应添加到groupBox3。 {{1}}应该只包含Back,Next,Finish和Cancel。

答案 1 :(得分:1)

我发现在WinForms组框中获取Tab键顺序的唯一方法是更改​​生成的InitializeControl方法中控件添加到组框的顺序。

如果您有多个组框,则必须检查组框添加到其容器的顺序,并可能更改它。

我真的不喜欢编辑生成的代码,但据我所知,这是修复此问题的唯一方法。

设置组框的TabStop属性根本没有帮助。