2011-03-07 26 views
7

Tengo un control de pestaña y necesito quitar el rectángulo de foco punteado alrededor de la pestaña seleccionada.¿Puedo eliminar el rectángulo del foco punteado sobre las pestañas de un TabControl?

Establecí la propiedad TabStop de TabControl en falso. Sin embargo, si hago clic en una pestaña y presiono la tecla Tab, aparece el rectángulo punteado alrededor de la pestaña.

He intentado crear mi propia TabControl y probado este

class MyTabControl : TabControl 
{ 
     public MyTabControl() 
     { 
      TabStop = false; 
      DrawMode = TabDrawMode.OwnerDrawFixed; 
      DrawItem += new DrawItemEventHandler(DoMoreTabControl_DrawItem); 
      Invalidate(); 
     } 
} 

Sin embargo, todavía aparece el rectángulo de puntos.

También intenté sobreescribir el método MyTabControl.OnPaint() pero no ayuda.

¿Hay alguna manera de lograr esto?

+0

¿Por qué quieres ocultarlo? ¿Alguna razón convincente? – Pradeep

Respuesta

1

Sí, evento DrawItem. No lo publicaste, es imposible adivinar qué tiene de malo. Simplemente asegúrese de no llamar al e.DrawFocusRectangle(), que probablemente se presente cuando copió el código de muestra de MSDN. Simplemente eliminar la declaración es suficiente. Considere utilizar un color de fondo o estilo de fuente de texto diferente como alternativa para que la sugerencia de enfoque no se pierda por completo.

+2

Un buen ejemplo de una aplicación que hace esto: Visual Studio y Microsoft SQL Server Management Studio. También navegadores web. No hay un rectángulo de enfoque en las pestañas. La tecla Ctrl + pestaña aparece en la forma aceptada para navegar por las pestañas del teclado. –

0

establecer el foco a la pestaña en lugar de cabecera (como este)

private void tabControl1_Click(object sender, EventArgs e) 
{ 
    (sender as TabControl).SelectedTab.Focus(); 
} 

Verá rectángulo punteado por un milisegundo, tan pronto como el caso anterior es ejecutado desaparecerá.

Además, para eliminar rectángulo de puntos de pestaña por defecto seleccionado en la carga

private void tabControl1_Enter(object sender, EventArgs e) 
{ 
    (sender as TabControl).SelectedTab.Focus(); 
} 

Tanto estos cambios trabajaron para mí! espero que ayude a alguien.

Cuestiones relacionadas