2010-01-07 64 views
7

Tengo varias casillas de verificación en un Winforms sin tener la Propiedad de texto de todas las casillas de verificación, así que el problema es que cuando cierro el mouse sobre la casilla de verificación resaltaba pero cuando ir a la casilla de verificación utilizando tecla de tabulación nunca ObtenerTextoSeleccionado ..Winforms Casilla de verificación Enfoque Problema si no se aplica texto en la casilla de verificación

Si alguien tiene el problema similar y ya lo resolvió Por favor, ayuda ..

Respuesta

7

el problema es que cuando una casilla de verificación se centrará destaca sólo el texto parte del control que está vacío en su caso. Tiene algunas opciones:

1) Para todos sus cuadros de texto "en blanco", establezca la propiedad del texto en un espacio. Esto creará una pequeña porción resaltada cuando selecciones el control.

2) Programe los eventos OnEnter y OnLeave de la casilla de verificación, y dibuje/dibuje un cuadrado alrededor de todo el control.

3) Si desea que el comportamiento MouseEnter predeterminado que crea un toque de luz amarillenta en la casilla de verificación en sí, crear su propio control de casilla de verificación de la siguiente manera:

public class MyCB : CheckBox 
{ 
    protected override void OnEnter(EventArgs e) 
    { 
     base.OnEnter(e); 
     base.OnMouseEnter(e); 
    } 

    protected override void OnLeave(EventArgs e) 
    { 
     base.OnLeave(e); 
     base.OnMouseLeave(e); 
    } 
} 
0

Puedes solucionar este problema estableciendo la propiedad AutoSize = Falso. Cuando AutoSize es verdadero, actúa como una etiqueta con AutoSize establecido en verdadero, en el sentido de que una etiqueta vacía ocupará casi ningún espacio en la pantalla. Con AutoSize = False, puede establecer manualmente el rectángulo delimitador para la casilla de verificación.

+0

Al establecer la propiedad AutoSize en falso todavía no cambia el hecho de que el texto está vacío y de forma predeterminada al pestaña en una casilla de verificación que sólo pone de relieve el bloque de texto, no a todo el propio control. Puede hacer que el control sea tan grande como desee, el tamaño automático se aplica al CheckBox, no al TextBox dentro del CheckBox. – AKoran

3

I añade un controlador de eventos para el evento CheckBox.Paint y añade lo siguiente:

private void checkBox1_Paint(object sender, PaintEventArgs e) 
{ 
    CheckBox checkBox = sender as CheckBox; 

    if (checkBox.Focused) 
    { 
     // e.ClipRectangle is affected by checkBox.Padding. Be careful when changing the Padding. 
     ControlPaint.DrawFocusRectangle(e.Graphics, e.ClipRectangle, checkBox.ForeColor, checkBox.BackColor); 
    } 
} 

I también ajustó el CheckBox.Padding ser 2, 2, 0, 1 el fin de obtener una frontera que fue de 1 píxel desde el borde de la CheckBox.

0

Si dibuja borde solamente, intente establecer estas propiedades.

AutoSize : False 
CheckAlign : MiddleCenter 
Font: Courier New, 12.25pt 
TextAlign: MiddleRight 
Padding : 0, 5, 0, 0 
Size : 26, 26 
Text : " " (two spaces) 
Cuestiones relacionadas