Validar textbox con Enter

A ver, mi pregunta parece fácil de resolver, pero por más que le doy vueltas no doy con la solución.
1º) Quiero validar un textbox solo con la tecla Enter. (Esto lo tengo claro con el evento Keypress)
2º) Pero, si se pasa el foco de un textbox a otro control con el ratón, la validación no se debe llevar a cabo, con lo cual, el textbox debe mantener el valor que tenia antes de ser modificado (que puede ser recuperado de una variable temp)... Y acá es donde me pierdo ya que si uso el evento LostFocus para devolver el valor al texbox, lo mismo me ocurre cuando se presiona Enter)
No se si me explico... En resumen, lo que quiero es que solo la tecla Enter me valide los datos
¿Una ayudita

1 Respuesta

Respuesta
2
No se si entiendo bien lo que deseas, pero según lo que resumes al final de tu pregunta entiendo que es que cuando el usuario presione la tecla Enter en un textbox el haga alguna validación que tu ya tienes hecha... ¿estoy en lo correcto?
Bueno de ser así, en el evento keypress del textbox debes usar lo siguiente:
If KeyAscii = 13 Then // Si presionan Enter
//validación que quieres hacer
end if 
Si era esto lo que requerías por favor cierra la pregunta, en caso contrario aclarame un poco más a ver si te puedo ayudar mejor.
Gracias por contestar, pero lo que me indicas es la parte que tengo controlada. Intentare aclararte un poco más con un caso practico. Supongamos lo siguiente:
Existe un textbox1.text="1234"
Ahora, tengo estas 2 alternativas:
1º) El usuario modifica el valor del textbox1 a "5678" y presiona Enter. Esto activa el evento Keypress que se encarga de validar el dato introducido ("5678" es el valor que queda). Luego cambia el foco al siguiente control de forma natural o según le ordene con un txtbox2. Setfocus. Hasta aquí todo correcto y funcionando.
2º) El usuario modifica el valor del textbox1 a "ABCD", pero no presiona Enter, sino que clickea en otro control. Lo que pretendo es que el dato no sea validado, con lo cual el textbox1 recupera el valor original "1234".
A ver si ahora he sido un poco más claro. Espero puedas ayudarme. Un saludo.
Ok, entendido, en este caso:
Mantendría una variable bandera en 0 (band=0) 
Cargaría la variable temporal con el dato que esta actualmente en el textbox en el evento setfocus, con esto modifiquen o no el campo con que solo el usuario se pare en el textbox se almacenará en temporal el mismo valor...
Luego haría que si se presiona enter no solo valide el campo si no que además me almacene en la variable bandera un 1 si el usuario digitó enter o mantenga el 0 si no lo hizo
luego pondría en el evento lostfocus del mismo textbox a que revise si la bandera es 1 o es 0, en caso de ser 0 y que además el valor del textbox y de la variable temporal no coincidan entonces asigne al textbox el valor de la variable temporal, de este modo si el usuario cambió el valor del textbox e hizo setfocus en cualquier otra parte del formulario se verificará si se presionó o no Enter, en caso que si no se hace nada, en caso que no presione enter y que el valor no haya cambiado tampoco hace nada, pero si NO presionó Enter y SI cambió el valor, este se retornará al valor original.
Avísame si me hice entender.
Muchísimas gracias, esta respuesta es excelente.
Sabia que debía haber una manera de solucionar esto, y aunque se me había ocurrido utilizar una variable temporal para almacenar el dato antiguo, no pensé igual a la hora de evaluar el evento Keypress con una variable bandera.
Muchas gracias nuevamente y hasta otra!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas