-
Buenas a todos/as... Tengo una pequeña duda. Tengo un formulario de varios campos. El formulario es de alta de un cliente y lo q kiero hacer es que en el textbox del codigo postal solo pueda meter numeros. Eso lo tengo hecho mas o menos asi:
If Me.txtCodPos.Text = Nothing Then
MessageBox.Show("El campo del Código Postal no se puede dejar en blanco")
Else
If IsNumeric(Me.txtCodPos.Text) Then
'Si es un número no hacemos nada
Else
'Si no es un número mostramos un mensaje de aviso
MessageBox.Show("El Código Postal debe ser un número")
End If
End If
En fin. Espero que se comprenda el codigo. La cosa está en q si no meto un numero sale el mensaje de aviso y automaticamente se pasa al siguiente textbox (el del telefono)... Como haría para q el cursor no saliera del textbox del Código Postal hasta que no introduzca un numero?? Muchas gracias de antemano!!!
-
fijate si te sirve esto,pone un textbox llamado textbox1 en el formulario y en un modulo pone este codigo:
Function SoloNumeros(ByVal Keyascii As Short) As Short
If InStr("1234567890", Chr(Keyascii)) = 0 Then
SoloNumeros = 0
Else
SoloNumeros = Keyascii
End If
Select Case Keyascii
Case 8
SoloNumeros = Keyascii
Case 13
SoloNumeros = Keyascii
End Select
End Function
Ahora anda al Formulario y hace doble click sobre el:
Después de la línea:
Inherits System.Windows.Forms.Form
Copia y pega esta Declaración de Variable
Public KeyAscii As Short
Ahora en el evento KeyPress del textBox1 copia y pega este código
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
keyascii = CShort(SoloNumeros(keyascii))
If keyascii = 0 Then
e.Handled = True
End If
Quedaría de la siguiente forma:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
keyascii = CShort(SoloNumeros(keyascii))
If keyascii = 0 Then
e.Handled = True
End If
End Sub
ahora ejecuta la aplicacion.....
-
Funcionar funciona muy bien todo. Pero no me entero de nada de lo q hace el codigo!! A ver como se lo explico yo a mi profesor!!!
-
puedes hacerlo con el evento validate de la caja de texto:
Private Sub cp_Validate(Cancel As Boolean)
If cp.Text <> "" Then
If Not IsNumeric(cp.Text) Then
MsgBox "el valor no es numerico"
Cancel = True
End If
Else
MsgBox "debe ingresar un valor"
Cancel = True
End If
End Sub
-
Mira después del MessageBox donde dices que solo puede ser numérico pon un setfocus a la caja de texto donde pides el código postal, y listo...
-
Muchas gracias a todos por las respuestas. A ver si consigo algo porque me tiene de cabeza el proyecto este q tengo q presentar a fin de curso.
-
Un setfocus?? Q es eso del setfocus?? Nunca he oído hablar de ello. Hazme el favor de decirme cómo funciona eso!! Gracias!!
-
El SetFocus es algo que se usa en VB6 y sirve para enviar el foco hacia un control especifico y se utilizaba asi: Objeto.SetFocus, en vbnet se usa Objeto.Focus()
-
Gracias!! Ya lo tengo. Menos mal q lo he conseguido al fin porque me estaba volviendo loco. Muchas, muchas gracias!!