Esto selecciona las páginas con pestañas, manteniendo el foco en la parte superior, como se le preguntó aquí arriba:
tc.TabPages[0].Enabled = false;
tc.SelectTab(0);
tc.TabPages[0].Enabled = true;
tc es aquí mi ejemplo para la TabControl tipo (es decir, es mi tarjeta de registro, y tiene algunas "páginas con pestañas"). Esto funciona bien para mí. Mi propósito es recorrer estas páginas con las teclas izquierda y derecha (arrows)
i. mi. cuando voy hacia delante (por Key.Right
) y llegar a la última tabpage
Quiero tener mi enfoque en [0]
sin activar el DataGridView que tiene en esa página, y cuando voy hacia atrás (por Key.Left
) y llegar a [0]
quiero tener [tc.TabCount - 1] habilitado, que es el último. El código para este caso es:
tc.TabPages[tc.TabCount - 1].Enabled = false;
tc.SelectTab(tc.TabCount - 1);
tc.TabPages[tc.TabCount - 1].Enabled = true;
la pieza completa de código es:
private bool KeyTc(System.Windows.Forms.Keys keyData)
{
if (keyData == K.Left && tc.SelectedIndex == 0)
{
tc.TabPages[tc.TabCount - 1].Enabled = false;
tc.SelectTab(tc.TabCount - 1);
tc.TabPages[tc.TabCount - 1].Enabled = true;
return true;
}
else if (keyData == K.Right && tc.SelectedIndex == tc.TabCount - 1)
{
tc.TabPages[0].Enabled = false;
tc.SelectTab(0);
tc.TabPages[0].Enabled = true;
return true;
}
return false;
}
Este bool KeyTc
se devuelve a un caso en una sentencia switch para la evaluación clave en:
protected override bool ProcessCmdKey(ref Message keyMsg, Keys keyData)
{ switch keyData { ... } }
Aunque no creo que esta sea una solución ideal, esta idea terminó funcionando mejor en mi aplicación. Gracias. – TheSean
Me alegro de ser de ayuda :) – digEmAll
No estoy seguro de si esta solución funcionará en todos los casos, consulte [esta pregunta] (http://stackoverflow.com/q/435433/806690). – tm1