none
Crear código de Texbox con variables en método recursivo. RRS feed

  • Pregunta

  • Hola a todos:

    Estoy realizando un programa, donde tengo que validar n cantidad de TexBox que se llaman igual, solo cambian en el id del final.

    Explico:
    Tengo:

    txtOrientacion1, txtOrientacion2, txtOrientacion3, etc.

    txtOrientacion1, txtOrientacion2, txtOrientacion, etc.

    txtDescripcionColindante1, txtDescripcionColindante2, txtDescripcionColindante3, etc........

    Entonces, la lógica nos dice que para verificar si están vacios esos txt, realizamos lo siguiente:

    if(txtOrientacion1.Text ="" || txtMedidaEnMetros1.Text ="" || txtDescripcionColindante.Text ="")

    {}

    else

    { SumaConstrucciones ++; }

    y eso lo tendría que hacer n cantidad de veces, para evitar eso, he pensado en realizar algo así:

     
     //*Declaro los nombres de mis TextBox                            
                                string Orientacion = "txtOrientacion";
                                string Medida = "txtMedidaEnMetros";
                                string Descripcion = "txtDescripcionColindante";

    //Hago un metodo recursivo para que valide todo en unas pocas lineas de código

                                 int i; 

                                while (i > 50)

                                {

    //Verifico con la construcción de los TexBox que tengan información

                                if(Orientacion  + (Convert.ToInt32))(i).Text ="" || Medida  + (Convert.ToInt32)(i).Text ="" || Descripcion + (Convert.ToInt32)(i).Text ="")
                                {}
                                else 
                                {
                                i++;
                                }
                                }

    esperando obtener el mismo resultado que con el primer código, solo que aquí obtengo las n cantidades de verificaciones que se presenten (50 para el ejemplo).

    Pero no me funciona así como lo presento, ¿Como le puedo hacer?

    Gracias....

    jueves, 21 de marzo de 2019 23:30

Respuestas

  • Hola

    exactamente que es lo que deseas hacer

    para poder brindarte una mejo ayuda

     private bool AreNullOrEmpty(string nombre)//el nombre es sin numero indexador ejem "textBox"
            {
                bool res = false;
                for (int i = 0; i < Controls.Count; i++)
                {
                    if (Controls[i] is TextBox)
                    {
                        if (Controls[i].Name.Contains(nombre))
                        {
                            if (String.IsNullOrEmpty(Controls[i].Text))
                            {
                                res = true;
                            }
                        }
                    }
                }
                return res;
            }
            //**********************************************
            private void button1_Click(object sender, EventArgs e)
            {

                if (!AreNullOrEmpty("textBox"))
                {
                    //algo si no son vacios
                }
                else
                {
                    //Algo si estan vacios
                }

    }

    si no son nulos ningun ejem textBox retorna false

    si almenos uno es nulo o vacio retoena truee

    • Marcado como respuesta AlfredMX martes, 26 de marzo de 2019 21:52
    martes, 26 de marzo de 2019 1:15

Todas las respuestas

  • intenta con esto

    private int conteo(string nombre)//el nombre es sin numero indexador ejem "textBox"
            {
                int cont = 0;
                for (int i = 0; i < Controls.Count; i++)
                {
                    if (Controls[i] is TextBox)
                    {
                        if (Controls[i].Name.Contains(nombre))
                        {
                            if (Controls[i].Text.Equals(""))
                            {
                                cont++;
                            }
                        }
                    }
                }
                return cont;
            }

    • Propuesto como respuesta Carlos_Ruiz_M viernes, 22 de marzo de 2019 15:55
    viernes, 22 de marzo de 2019 4:34
  • Al parecer todo va bien.

    Pero una pregunta (a lo mejor básica) como mando a llamar el 

    private int conteo

    para poder iniciar la instrucción que me compartes, ignoro como hacerlo, me puedes orientar?

    Gracias.

    lunes, 25 de marzo de 2019 23:52
  • Hola

    exactamente que es lo que deseas hacer

    para poder brindarte una mejo ayuda

     private bool AreNullOrEmpty(string nombre)//el nombre es sin numero indexador ejem "textBox"
            {
                bool res = false;
                for (int i = 0; i < Controls.Count; i++)
                {
                    if (Controls[i] is TextBox)
                    {
                        if (Controls[i].Name.Contains(nombre))
                        {
                            if (String.IsNullOrEmpty(Controls[i].Text))
                            {
                                res = true;
                            }
                        }
                    }
                }
                return res;
            }
            //**********************************************
            private void button1_Click(object sender, EventArgs e)
            {

                if (!AreNullOrEmpty("textBox"))
                {
                    //algo si no son vacios
                }
                else
                {
                    //Algo si estan vacios
                }

    }

    si no son nulos ningun ejem textBox retorna false

    si almenos uno es nulo o vacio retoena truee

    • Marcado como respuesta AlfredMX martes, 26 de marzo de 2019 21:52
    martes, 26 de marzo de 2019 1:15
  • Pefecto, solo le hice unas adaptaciones a mi código y con lo que me propones, funciona de maravilla.

    Muchas gracias por tu respuesta.

    Saludos.

    martes, 26 de marzo de 2019 21:53