Pregunta

Tengo un WinForm con 3 cuadros de grupo, uno con cuadros combinados, y dos con botones de radio. Me puse de todos ellos y sus hijos a los controles "PuntoDeTabulación = false", pero cuando el ciclo con TAB, el botón de opción seleccionado en ese momento en cada uno de los dos últimos cuadros de grupo se centró.

Si no hay manera de cambiar este comportamiento, lo que sería un buen evento para la captura y mover el foco lejos? No puedo encontrar un evento "OnFocus".


La solución es establecer un método (código de abajo) para manejar la "Intro" caso de cada botón de radio en la forma (si eso es lo que desea).

En realidad, sólo lo hice para los botones de radio del primer cuadro de grupo y funcionó, botones de radio de la segunda caja de grupo no reciben atención, a pesar de sus eventos "Enter" no se manejan. Este no es el comportamiento que habría esperado.

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

En el archivo * .Designer.cs edita cada evento Enter (para cada botón de radio) hasta el punto de que uno controlador de eventos (el método anterior).

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
¿Fue útil?

Solución

La documentación de MSDN para RadioButton.TabStop afirma "Esta API admite la infraestructura de .NET Framework y no está destinado a ser utilizado directamente desde el código". Que básicamente significa: "Esto no va a funcionar cómo se espera que".

Dicho esto, el evento Enter se disparará cuando el botón recibe el foco. Usted puede tratar de utilizar esta técnica para mover el foco a otro control.

Otros consejos

Configuración de la TabStop en falso en un RadioButton para evitar la tabulación de los trabajos de control hasta que actully selecciona el botón de radio si no anula adicionales como lo sugerido por @msergeant.

Editar

El siguiente código impide que el código de conseguir un evento de tecla de tabulación:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

Los botones de radio se comportan de manera diferente con respecto a la lengüeta de otros controles en cuanto a que trabajan en conjuntos o grupos sobre la base de establecer el índice de tabulación o colocar a continuación, los botones de opción en un cuadro de grupo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top