none
Validar Varios TextBox

    Question

  • Buenas a tod@s

    Tengo un Form que contiene 4 textbox (textbox1, textbox2, textbox3, textbox4), este Form lo estoy pensando utilizar para guardar información en el registro de Windows por lo que necesito saber cuales contienen datos y cuales no, lo que me trae dos prenguntas:

    1. Como hago para saber cuales estan vacios.

    2. Como hago para que guardar en una variable los textbox que si tienen datos.

    Muchas gracias por sus comentarios...

    Saludos,


    Jimcesse
    Wednesday, August 03, 2011 5:26 AM

All replies

  • hola

    1-

    si sabes que tienes 4 textbox y solo estos podrias validar cada uno

    if(string.IsNullOrEmpty(textbox1.Text)){

       //aqui el campo no tiene datos

    }

     

    2-

    no entendi, en que tipo de variable necesitas poner esta info ? o porque necesitas poner los textbox con datos

     

    Nota: menciona en que lenguaje programas asi es mas simple dar un ejemplo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, August 03, 2011 1:04 PM
  • Hola Leandro

    Muchas gracias por tu ayuda... Ahorita estoy trabajando con Visual Basic y la información que necesito contener en los textbox es un String por ejemplo en el textbox1 voy a guardar una direcciones de un ftp, en textbox2 usuario y en el textbox3 contraseña...

    Saludos,


    Jimcesse
    Wednesday, August 03, 2011 1:41 PM
  • Hola, puedes probar este sencillo ejemplo y adecuarlo a tus necesidades.

     Dim Cadena As String
      Dim Datos As String
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        'Acá compruebas si los textbox tienen o no datos
        For Each _TextBox As Control In Me.Controls
    
          If TypeOf _TextBox Is Windows.Forms.TextBox Then
    
            If _TextBox.Text.Length = 0 Then
    
              Cadena = String.Format("Hay datos sin llenar en: {0} Ingrese sus datos por favor.", _TextBox.Name)
              MessageBox.Show(Cadena)
    
            Else
    
              'Guardas los datos en una Variable, si deseas separarlos puedes
              'utilizar el Split, separandolos del espacio que se les a agregado
              'y despues de separrlas puedes guardar los datos
              Datos &= String.Format(" {0}", _TextBox.Text)
    
            End If
    
          End If
    
        Next
    
      End Sub
    
    Saludos



    Estudiante de Sistemas Informáticos.
    • Proposed as answer by Alí Ramsés Thursday, May 23, 2013 10:13 PM
    • Unproposed as answer by Alí Ramsés Thursday, May 23, 2013 10:13 PM
    Wednesday, August 03, 2011 5:34 PM
  • Hola Amigos

    Gracias a ambos por el interes en mi pregunta...

    Aun no logro que esta validación me funcione, estuve investigando el metodo String.IsNullOrWhiteSpace y me parece que le podria echar mano ya que se puede verificar si el textbox esta vacio o contiene espacios en blanco unicamente...

    Ahora, como nose si me queda clara la pregunta inicial, comento un poco mas de lo que quisiera hacer:

    Tengo un Form en el cual estoy pensado hacer un "Mantenimiento" de parametros que la aplicación necesita para funcionar por ejemplo, pensando que estoy haciendo un cliente FTP, como parametros debo recibir UserName, Password y HostFTP pensando en que no siempre seran los mismo datos o para no "quemar" esta información en codigo, se me ocurrio guardarlos en el Registro de Windows... Luego me surgio la duda de que pasaba si solo necesitaba modificar un solo parametro por ejemplo el Password, cuando abró el form y modifico el Password los demas parametros (UserName y HostFTP) quedan vacios... Entonces acá es donde nace mi duda, como hago para no contemplar los TextBox que esten vacios o que contengan solo espacios en blanco y poder salvar solo los TextBox que contienen algun dato.

    Nuevamente, gracias por su ayuda...

    Saludos,


    Jimcesse
    Friday, August 05, 2011 12:29 AM
  • se me ocurrio guardarlos en el Registro de Windows

    no, no hagas eso, hay miles de formas de guardar pero no en el registrod e windows

    guardalo en un archivo de text, serualizalo a binario (creras una clase que serialzias), ponlo en el archivo de configuracion

    pero en la registry no lo guardes porque recuerda que ahora estamos con win7 y los niveles de seguroidad que estos tiene son mucho mas elevados, aunque sea con win Xp esto ya no sed aconseja, estaba bien para aplicaciones en la epoca de VB6 pero en .net no

    como hago para no contemplar los TextBox que esten vacios o que contengan solo espacios en blanco y poder salvar solo los TextBox que contienen algun dato.

    como bien has cometado puedes validarlo

    podrias suar el metodo que ahs mencionado es valido

    If Not String.IsNullOrWhiteSpace(TextBox1.Text) Then
    
     'aqui tienes en cuanta este textbox
    
    End If
    
    y asi para el resto de los controles

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Friday, August 05, 2011 2:59 AM
  • Hola P. Mata Me llamo mucho la atención tu código propuesto, realmente lo necesito, pero no acabo de entender algunas cosas, ya lei acerca del For Each y tratado de enterder tu propuesta, mi pregunta es ¿Por que colocas un guion bajo antes de la palabra TextBox (_TextBox)?, de antemano muchas gracias.

    Saludos a Todos.

    Thursday, May 23, 2013 10:18 PM
  • Hola que tal me uno a su post, el _TextBox es una variable que se da de alta en el For Each, esta variable contiene el tipo de control por el cual esta pasando el For Each, entonces hay un if que valida si el control es de tipo TextBox, si se cumple la condición hace lo que tu quieres.

          If TypeOf _TextBox Is Windows.Forms.TextBox Then
    
            If _TextBox.Text.Length = 0 Then
    
              Cadena = String.Format("Hay datos sin llenar en: {0} Ingrese sus datos por favor.", _TextBox.Name)
              MessageBox.Show(Cadena)
    
            Else
    
              'Guardas los datos en una Variable, si deseas separarlos puedes
              'utilizar el Split, separandolos del espacio que se les a agregado
              'y despues de separrlas puedes guardar los datos
              Datos &= String.Format(" {0}", _TextBox.Text)
    
            End If
    

    Espero que sea de tu ayuda.


    Hugo Gil

    Saturday, May 25, 2013 2:39 AM
  •  HOLA YO TENGO UNA DUDA 

    YO queiro hacer lo siguente no se si me puedne ayudar

    miran al meter xxxx numero en txtbox (formulario exe) al dar siguiente paso cuando de siguiente valide el numero xxxx que me ti

    con los numeros que tengo guardados en la hoja2 si es correcto que siga pero si no es correcto me mande una alerta no se como hacerle 

    me pueden ayudar por favor gracias por su pronta respuesta

    este mi es correo si gustan mandarme su respuesta se los agradesco por que tengo otra duda a penas estoy empesando y em esta gustando esto pero me estoy quebrando la cabeza en algunas cosas 

    angelfloresrivera@hotmail.com

    Monday, March 10, 2014 4:09 AM
  • Yo tengo un problema referido a este que me está dando dolor de cabeza.

    Tengo formularios creados algunos con más de 50 textbox, incluso con algún desplegable.

    El problema es que los usuarios hacen cambios y me piden que les avise de guardar siempre que hayan hecho algún cambio. 

    En vb.6 los text box los podia hacer una matriz y detectaba con una sola función si habían pulsado en algún campo con lo cual al abandonar el formulario les avisaba si querían guardar.

    Pero ahora no se como hacerlo.

    Veo una barbaridad crear 60 funciones de reconocimiento de keypress para cada textbox.

    ¿Alguna solución?.

    Tuesday, August 12, 2014 12:17 PM
  • Buenas,

    No es necesario que realices 60 funciones de KeyPress, puede definir una única función y asociar todos esos eventos a la misma función que gestiona el keypress de los TextBox


    Si se solucionó tu consulta, no olvides marcarla como respondida. Si te ayudó, vótala como útil.

    Tuesday, August 12, 2014 12:43 PM
  • Lo haces así,

    creas tu propio tipo de textbox, heredando del control TextBox, le agregas una propiedad "dirty" y sobreescribes el método OnKeypress (u OnTextChanged), en donde pones a true la propiedad, inicialmente false.

    Cuando sales del form, haces un Any() de tus textboxes, y si alguno es dirty, avisas al usuario.

    6 líneas de código para lo primero y 2 para lo segundo.


    [W]

    Tuesday, August 12, 2014 1:17 PM
  • Para mi pregunta me quedo con la respuesta de José Luque, no tenía ni idea del uso de Handles:

     Private Sub txtBoxPulsa1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtBoxPulsa1.KeyPress, txtBoxPulsa2.KeyPress, txtBoxPulsa3.KeyPress, txtBoxPulsa4.KeyPress

    Select Case e.KeyChar
                Case Microsoft.VisualBasic.ChrW(Keys.Return) 
                SendKeys.Send("{TAB}")
                e.Handled = True ' Elimina el BIP DEL INTRO
        Case Else
                    Modificado = True
            End Select
    End Sub

    La  respuesta de Walter no la entendí bien, pero al crear una clase utilicé una variable booleana de modificación, pero en caso de tener más de un formulario abierto no sabría cuál fue el que la modificó.

    También desconocía y he visto muy interesante lo de crear nuevas clases de textbox, es una forma de crear tu propio estilo.

    Muchas Gracias.


    Tuesday, August 12, 2014 9:57 PM