Enter para pasar de un control a otro Para poder detectar la pulsación de la tecla Enter se puede utilizar el evento Keypress, el cual detecta la pulsación de cualquier tecla, devolviendonos el código ASCII de la tecla pulsada. En Visual Basic no hace falta saberse el código ASCII de cada tecla, ya que tiene definidas constantes para cada tecla como se puede observar en la siguiente tabla. Por tanto para detectar la tecla Enter utilizaremos la constante vbKeyReturn, la cual equivale al código ASCII 13. El código para realizar la detección es el siquiente: Cuando se pulsa la tecla Enter eliminamos el código de la tecla pulsada para que no se produzca ese molesto pitido del ordenador y a continuación simulamos la pulsacion de la tecla de tabulación mediante la sentencia SendKeys. SendKeys es una sentencia más de Visual Basic, al igual que If Then, Select Case, etc...Esta sentencia permite emular la pulsación de las teclas que deseemos. En la siguiente tabla se muestran los códigos de las principales teclas para que podamos emular su pulsación cuando lo necesitemos. Para que este código funcione en todos los controles TextBox de nuestro formulario, habrá que repetirlo en cada evento Keypress y esto produce un aumento de lineas de código y de tiempo por nuestra parte. Para evitarlo podemos definir una rutina que se encargue de realizar el proceso, a la que le pasaremos el codigo ASCII de la tecla pulsada en cada momento: Una ùltima mejora que se puede añadir a este código es que no es necesario incluirlo en cada evento Keypress de cada control TextBox que utilicemos, ya que haciendo uso de la propiedad Keypreview del formulario en el que estemos podremos realizar esta acción con una sola línea para cada formulario Dando el valor True a esta propiedad conseguimos que el evento Keypress sea tratado primero por el formulario y a continuación por el control que la invocó, si es que hubo alguno, ya que el propio formulario tambien puede generar dicho evento. De esta forma colocando una única linea de codigo en el evento Keypress del formulario conseguiremos que se llame a la subrutina EnterTab cada vez que se pulse Enter desde cualquier control. Arriba Aceptar solo numeros El parámetro KeyAscii del evento KeyPress nos indica el código ASCII de la tecla que se acaba de pulsar.Sólo tendremos que realizar las correspondientes comparaciones y asignar el valor 0 a dicho parámetro cuando la tecla pulsada no sea, en este caso, numérica. Los códigos 44 y 46 corresponden al punto y la coma, en este caso la coma es sustituida por el punto decimal, válido para el sistema decimal en España. Si no queremos que el número tenga decimales nos sobrarán las 2 primeras lineas. También se puede depurar el código para que no se acepte otro punto si éste ya ha sido pulsado. Se comprueba que la tecla pulsada este entre el cero(48) y el nueve (57) y se permite que se pulsen teclas de control: flechas, borrar, etc... Tal como ocurría en el ejemplo anterior se puede crear un subrutina que se encargue de realizar el proceso y desde cada control que queramos que acepte solo números pasarle el codigo ASCII de la tecla pulsada, aunque eso lo dejo para la práctica del lector. Arriba Seleccionar el contenido de un TextBox al recibir el foco Si queremos que el texto de un TextBox quede automáticamente seleccionado al recibir el foco, debemos realizar la selección del texto en el evento GotFocus del control. Utilizando las propiedades SelStart y SelLength indicaremos el inicio de la selección y la longitud en caracteres respectivamente. Para seleccionar todo el texto, la posición de inicio será 0 y la longitud será la misma del control la nos la dará la función Len() También podemos contruir una subrutina que realice dicha acción, al cual tendremos que pasarle como parámetro el control cuyo texto queramos seleccionar. Ahora por cada GotFocus de cada Textbox únicamente colocaremos una linea que llame a dicha subrutina. Lamentablemente no se puede conseguir que una sola linea en todo el formulario haga todo el trabajo como ocurria en el ejemplo anterior.