2012-06-15 39 views
7

Tengo una aplicación de formulario de Windows. En el formulario hay tres grupos de cajas. Cada grupo contiene algunos controles. Por favor mira la imagen. formTabIndex no funciona correctamente

Hay una "bandera" de cuadro de grupo que contiene algunas casillas de verificación. "flag" está dentro de "groupbox1". Utilicé la tecla Tab para pasar por cada control, pero no funciona para las casillas de verificación en "marca". Establecí el tabindex adecuado para cada control.

Funciona con cuadros de texto y botones, pero con casillas de verificación.

¿Por qué? Gracias por la ayuda.

EDITAR

// 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. 
+0

díganos qué control se activa después de presionar la pestaña continuamente –

+0

¿Podría publicar su código? – Dante

+0

El código es solo números para tabindex. Todos los controles están activos excepto las casillas de verificación. –

Respuesta

9

Para System.Windows.Forms.GroupBox:

Usted debe asegurarse de que su GroupBox flag tiene un conjunto ÍndiceDeTabulación apropiado.

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

Además, de forma predeterminada, un control GroupBox tiene su propio valor ÍndiceDeTabulación , que es un número entero. Un control GroupBox en sí no puede tener foco en tiempo de ejecución. Por lo tanto, cada control dentro de un GroupBox tiene su propio valor de tabIndex , comenzando con .0. Naturalmente, como el TabIndex de un control GroupBox se incrementa, los controles dentro de él serán incrementados en consecuencia. Si ha cambiado un valor ÍndiceDeTabulación de 5 a 6, el valor ÍndiceDeTabulación del primer control de su grupo de forma automática cambios a 6,0, y así sucesivamente

Además, asegúrese de que la propiedad TabStop de su GroupBox flag no es establecer en falso Creo que falso es el predeterminado.

Para System.Windows.Controls GroupBox:

asegurarse de que la propiedad se establece GroupBox.IsTabStop. Esto también está predeterminado a falso.

Actualización: Parece ser que todos los controles están siendo añadidos a groupBox3. Debe asegurarse de que cada uno de ellos se agregue solo a su cuadro de grupo contenedor. Por ejemplo, checkBox1, checkBox2 y checkBox3 se deben agregar a flag, que a su vez se debe agregar a groupBox1. groupBox3 solo debe contener Atrás, Siguiente, Terminar y Cancelar.

+0

No hay propiedad TabStop para GroupBox. –

+0

Revise el enlace. Específicamente va al articale de MSDN para la propiedad GroupBox.TabStop. Además, probé creando un nuevo GroupBox y verifiqué que a) la propiedad existe yb) por defecto es falsa. –

+0

Bien. ¿Quizás la casilla de verificación solo es para mouse en vez de tecla? –

1

Descubrí que la única forma de obtener el orden de tabulación en los cuadros de grupo de WinForms es cambiando el orden en que se agregan los controles a los cuadros de grupo en el método InitializeControl generado.

Si tiene varios cuadros de grupo, deberá verificar el orden en que se agregan los cuadros de grupo a su contenedor y posiblemente cambiarlo.

Realmente no me gusta editar el código generado, pero hasta donde puedo ver es la única manera de solucionarlo.

Establecer la propiedad TabStop del cuadro de grupo no ayudó en absoluto.

Cuestiones relacionadas