tengo un control Textbox que a veces se actualiza mediante programación y también puede ser actualizado por el usuario. ¿cómo puedo distinguir entre esos dos eventos? me gustaría tener el indicador "Sucio" establecido en "verdadero" cuando el usuario cambia el texto.C# textbox event solo para entrada de usuario
Respuesta
Usted puede utilizar el evento tecla de abajo del cuadro de texto.
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//Insert the code you want to run when the text changes here!
}
este evento es válido para el cuadro de texto, pero me pregunto qué pasa con otros controles como NumericUpDown ... – kaycee
Sí, esta solución no es la más limpia para todos los controles. Sin embargo, el control numérico de reducción tiene tanto el evento keydown como el evento mousedown. Supongo que podrías usar ambos junto con el seguimiento del valor del control. Alternativamente, siempre puede lanzar un indicador booleano cada vez que cambie el valor de forma programática, luego verifique el indicador booleano en el evento ValueChanged para el control (estableciéndolo de nuevo en el valor predeterminado antes de continuar su procesamiento). Esa es ciertamente una solución muy simple, tal vez no la más elegante. –
Esto no funciona si el usuario corta y pega datos en el cuadro de texto con el mouse. –
evite establecer el indicador "sucio" cuando termine programáticamente. Desactivar el controlador de eventos o establece un indicador que dice "este es el código, no el usuario"
Desactivar el controlador de eventos durante la duración de los cambios en línea es una gran idea. También resuelve cualquier problema que pueda tener los usuarios al pegar texto en el cuadro. –
tratar onBlur
esto va a captar el momento que el usuario sale del campo.
se puede trabajar en conjunto con onFocus para guardar el valor antes de editar
buena idea, pero no 100% efectiva. Sería un poco "más limpio" que mi respuesta –
"Limpieza" no tiene sentido si no funciona. Simplemente separar el controlador es bastante estándar para este tipo de cosas. –
No está hablando del controlador deshabilitado, sino de la bandera adicional. Bueno, es otra bandera adicional o un controlador adicional ... –
mi solución trabajo para el tipo, copiar y pegar
private void TextChanged(object sender, EventArgs e)
{
if (((TextBox)sender).ContainsFocus)
{
}
}
Comprobar propiedad Modified del cuadro de texto en el evento TextChanged. Si es verdadero, el usuario realizó los cambios, de lo contrario, el texto se modificó mediante programación.
- 1. jQuery textbox change event
- 2. C# WinForms Alineación vertical para TextBox, etc.
- 3. C - Lectura de entrada de usuario
- 4. C# Entrada de usuario de consola
- 5. Multi-color TextBox C#
- 6. SQLDependency_OnChange-Event activa solo una vez Tiempo
- 7. Validación de entrada de usuario para JOptionPane.showInputDialog
- 8. ¿Cómo simulo la entrada de texto a un WPF TextBox?
- 9. Multilínea para WPF TextBox
- 10. Event/Task Queue Multithreading C++
- 11. Aceptar entrada de usuario
- 12. ¿Cómo se definen las restricciones de entrada de TextBox?
- 13. Rieles: entrada de usuario para varios modelos en un solo formulario: cómo
- 14. Usuario único de solo lectura para svn
- 15. Soporte de pantalla de manifiesto Entrada solo para dispositivo y solo para tableta
- 16. C# leyendo la entrada del usuario sin detener una aplicación
- 17. ¿Cuál es la mejor manera de implementar restricciones de entrada en un TextBox en C#?
- 18. Preguntar a un usuario con un cuadro de entrada? [C++]
- 19. Obtener entrada del usuario
- 20. php timer para permitir solo la entrada del usuario cada dos segundos
- 21. wix obtener usuario de entrada
- 22. Entrada de usuario + Ruby + Regex?
- 23. Seguridad de primavera: agregar "On successful event event listener"
- 24. ¿Validar la entrada del usuario?
- 25. ¿Dónde `getchar()` almacena la entrada del usuario?
- 26. Entrada de interfaz de usuario con reactive-banana-wx
- 27. ¿Convertir automáticamente la entrada WPF TextBox a Todas las mayúsculas?
- 28. Deje cuadro de texto para cambiar el tamaño, pero no crece en la entrada del usuario
- 29. Git con Cygwin - no acepta la entrada de usuario para el nombre de usuario
- 30. Escenarios de pepinillos para validación de entrada de usuario
¿Está [vinculando datos] (http://msdn.microsoft.com/en-us/library/ms752347.aspx)? –
sin enlace de datos para este control ... – kaycee