Actualmente en mi aplicación es imposible anular la selección de un cuadro de texto. La única forma es seleccionar otro cuadro de texto. Mis usuarios y yo aceptamos que al hacer clic en cualquier otro lugar del formulario, se debe anular la selección del cuadro de texto actual. Traté de sobreescribir el MouseDown en muchos controles y tener el foco establecido en una etiqueta al azar, pero no funciona para algunos controles como MenuStrip o barras de desplazamiento. ¿Algunas ideas?¿Cómo deseleccionar el cuadro de texto si el usuario hace clic en otro lugar del formulario?
Respuesta
Suponiendo que no tiene otros controles en su foro, intente agregar un control de Panel que pueda recibir el foco.
Conjunto del TabIndex
en el control Panel
a algo menos de tu control o TextBox
NumericUpDown
tiene.
Ahora, cuando su formulario principal recibe el foco, el Panel
debe recibir el foco en lugar del área TextBox
.
Esto no resuelve mi problema. No quiero que se habiliten o deshabiliten, solo que pierdan el foco cuando el usuario haga clic de lo contrario. Además, esto solo detecta clics de formulario y no controla los clics en el formulario. –
Si el control está deshabilitado, no recibirá mensajes del mouse y no recibirá el foco. –
Sí, pero solo lo deshabilita (lo que no quiero) cuando el usuario hace clic en un área en blanco en el * formulario *. –
que tienen algún tipo de "solución" para usted. Solo otro control (que puede enfocar) en segundo plano. Probé esto para un GridView (que pintará su control de color gris), pero debería poder hacerlo con un control personalizado en el color que desea o simplemente establecer el color de fondo de la vista de grilla (doh). De esta forma, cada vez que el usuario haga clic en el fondo, este control de fondo se enfocará.
Esto tampoco funciona. Simplemente cambia el contenedor de todos los controles del formulario al panel. El mismo problema todavía existe. –
Dado que probablemente tenga una etiqueta, o cualquier otro control en su winform, yo iría con la solución recommended here y solo pondré el foco en una etiqueta cuando haga clic en el formulario.
En el peor de los casos, incluso puede agregar una etiqueta situada en la posición -100, -100, configurarlo como el primero en el orden de las pestañas y enfocarlo() en el formulario haga clic.
Tuve un problema similar recientemente. Mi interfaz es muy compleja, con muchos paneles y páginas con pestañas, por lo que ninguna de las respuestas más simples que encontré ha funcionado.
Mi solución fue agregar programáticamente un manejador de clics del mouse a cada control no enfocable en mi formulario, que intentaría enfocar cualquier etiqueta en el formulario. Enfocar una etiqueta específica no funcionaría cuando estuviera en una página de pestañas diferente, así que terminé revisando y enfocando todas las etiquetas.
Código de lograr es la siguiente:
private void HookControl(Control controlToHook)
{
// Add any extra "unfocusable" control types as needed
if (controlToHook.GetType() == typeof(Panel)
|| controlToHook.GetType() == typeof(GroupBox)
|| controlToHook.GetType() == typeof(Label)
|| controlToHook.GetType() == typeof(TableLayoutPanel)
|| controlToHook.GetType() == typeof(FlowLayoutPanel)
|| controlToHook.GetType() == typeof(TabControl)
|| controlToHook.GetType() == typeof(TabPage)
|| controlToHook.GetType() == typeof(PictureBox))
{
controlToHook.MouseClick += AllControlsMouseClick;
}
foreach (Control ctl in controlToHook.Controls)
{
HookControl(ctl);
}
}
void AllControlsMouseClick(object sender, MouseEventArgs e)
{
FocusLabels(this);
}
private void FocusLabels(Control control)
{
if (control.GetType() == typeof(Label))
{
control.Focus();
}
foreach (Control ctl in control.Controls)
{
FocusLabels(ctl);
}
}
Y luego agregar esto a su evento Form_Load:
HookControl(this);
- 1. Ocultar en el teclado iOS cuando el usuario hace clic fuera de un cuadro de texto
- 2. Ejecuta otro javascript cuando el usuario hace clic en "ok" en el cuadro de alerta
- 3. jQuery si hace clic?
- 4. Cómo cambio el color de fondo de un cuadro de texto cuando el usuario hace clic en él con CSS
- 5. Cambiar el borderColor del cuadro de texto
- 6. Ocultar formulario en lugar de cierre cuando hace clic en el botón de cierre
- 7. ¿Cómo crear un formulario HTML con "instrucciones" precargadas que se borran cuando un usuario hace clic en el cuadro?
- 8. Cómo leer el cuadro de texto. ¿Valor del texto de otro hilo en WPF?
- 9. Cómo eliminar el foco de un QLineEdit cuando se hace clic en cualquier otro lugar de la ventana
- 10. jQuery: Eliminar clase si se hace clic en otro elemento
- 11. jQuery dejar de setTimeout si el usuario hace clic en el campo de entrada
- 12. Android Mueva el cursor de Editar texto a otro si hace clic en cualquier letra en el campo?
- 13. ¿Cómo deseleccionar un elemento en un cuadro de selección?
- 14. El uso de un cuadro de texto HTML en lugar de un cuadro de texto ASP.NET
- 15. Prevenir el parpadeo del cursor en el cuadro de texto
- 16. Winforms: haga clic/arrastre a cualquier lugar en el formulario para moverlo como si hubiera hecho clic en el título del formulario
- 17. El evento de clic de control del usuario no funciona al hacer clic en el texto dentro del control?
- 18. ¿Cómo se oculta un elemento emergente de Swing cuando se hace clic en otro lugar?
- 19. JQuery Texto predeterminado en el cuadro de texto vacío
- 20. Deseleccionar texto seleccionado en JTextPane
- 21. JQuery UI Autocompletar: haga que el menú se abra cuando el usuario haga clic en el cuadro de texto
- 22. ¿Cómo se abre un cuadro de alerta cuando se hace clic en el botón de actualización del navegador?
- 23. ¿Cómo actualizar el valor en un cuadro de texto basado en el valor ingresado en otro cuadro de texto?
- 24. añadiendo cuadros de texto dinámicamente a un formulario con el clic de un botón
- 25. Realizar evento de clic del botón cuando el usuario pulsa la tecla Intro en el cuadro de texto
- 26. texto fantasma - cómo tener en texto claro cuadro de texto
- 27. Ingrese texto en EditText que luego desaparece cuando el usuario hace clic dentro de él
- 28. cómo establecer el valor del cuadro de texto en jquery
- 29. Cómo comprobar si el cualquiera de mi cuadro de texto está vacío o no en javascript
- 30. ¿cómo distingue el navegador la diferencia entre el clic del usuario y el clic programático?
¿Cuál es la razón de este requisito? ¿Cómo beneficia esto a tus usuarios? – cdhowie
¿Qué plataforma estás usando? WinForms, ASP.NET, WPF? –
@Kevin: Winforms C# –