none
Leer contenido TextBox RRS feed

  • Pregunta

  • Buenos dias, me encuentro trabajando con un tabcontrol (Dispositivos Moviles) en donde en una de sus tabpages, tengo varios textbox y debo evaluar su contenido, para realizarlo de en una función trato de acceder a los textbox así:

    this.Controls[0].Controls[1].Controls[variableEntera]

    El problema radica en la variable entera, he intentado colocar los valores de los index de los textbox pero no importa que valor coloque allí (0, 1...n) siempre me indica que estoy fuera del rango.

    Gracias por su colaboración.
    martes, 14 de julio de 2009 13:56

Respuestas

  • hola,


    un cambio

                    TabControl tab = this.Controls[0] as TabControl;              
                    if (tab != null)
                    {
                        TabPage tabp = tab.Controls[1] as TabPage;
                        if (tabp != null)
                        {
                            TextBox text = tabp.Controls[14] as TextBox;
                            if (text != null)
                            {
                                MessageBox.Show("Asì se puede acceder al textbox", "Que Bien");
                            }
                            else
                            {
                                MessageBox.Show("No se puede acceder", "Que Mal");
                            }
                        }
                    }


    como veras la idea es usar el "as" no es cast directo

    puede que los indices de los controles que usas nos ean los correctos, por eso te recomendaba que uses el foreach para descubirlo en que posicion del indice de Controls se encuentra



    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Xanti miércoles, 15 de julio de 2009 14:32
    miércoles, 15 de julio de 2009 13:36

Todas las respuestas

  • hola,

    me imagino que el this, es el del formulario.

    si es asi por ahi primeramente deberia poder castear a un control Tab.

    algo asi:

    TabControl tab = this.Controls[0] as TabControl;

    if(tab != null)
    {
      TextBox text = tab.Controls[1] as TextBox;
     
      if(text != null)
          text.Text = "";

    }


    podrias utilziar un foreach tambien para recorrer los controles y ver cual es el que necesitas.

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 14 de julio de 2009 14:27
  • Buenos días,
    Gracias por tu colaboracion, he ensayado la solución que propones pero continúa el mismo síntoma ArgumentOutOfRangeException, el programa funciona bien hasta que intento acceder a los textbox pero reviso el tabindex de cada uno de ellos y los ensayé todos pero no logro eliminar el error, parte del código es:

                    TabControl tab = (TabControl)this.Controls[0];              
                    if (tab != null)
                    {
                        TabPage tabp = (TabPage)tab.Controls[1];
                        if (tabp != null)
                        {
                            TextBox text = (TextBox)tabp.Controls[14];// esta es la línea en donde no puedo acceder a los textbox
                            if (text != null)
                            {
                                MessageBox.Show("Asì se puede acceder al textbox", "Que Bien");
                            }
                            else
                            {
                                MessageBox.Show("No se puede acceder", "Que Mal");
                            }
                        }
                    }

    Muchas gracias por tu atención.
    miércoles, 15 de julio de 2009 13:29
  • hola,


    un cambio

                    TabControl tab = this.Controls[0] as TabControl;              
                    if (tab != null)
                    {
                        TabPage tabp = tab.Controls[1] as TabPage;
                        if (tabp != null)
                        {
                            TextBox text = tabp.Controls[14] as TextBox;
                            if (text != null)
                            {
                                MessageBox.Show("Asì se puede acceder al textbox", "Que Bien");
                            }
                            else
                            {
                                MessageBox.Show("No se puede acceder", "Que Mal");
                            }
                        }
                    }


    como veras la idea es usar el "as" no es cast directo

    puede que los indices de los controles que usas nos ean los correctos, por eso te recomendaba que uses el foreach para descubirlo en que posicion del indice de Controls se encuentra



    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Xanti miércoles, 15 de julio de 2009 14:32
    miércoles, 15 de julio de 2009 13:36
  • Hola, Gracias por tu colaboración,
    Estaba consultando la cantidad de controles que contiene el tabPage1, en donde graficamente he insertado 7 textbox, 7 labels, 3 radiobutton y 1 botón, pero la respuesta es 0 utilizando las siguientes líneas:

                    TabControl tab = this.Controls[0] as TabControl;
                    if (tab != null)
                    {
                        TabPage tabp = tab.Controls[1] as TabPage;
                        if (tabp != null)
                        {
                            MessageBox.Show("Cantidad: " + tabp.Controls.Count.ToString());
                        }
                    }

    No se si porque si graficamente los he insertado en el control no los puedo acceder.
    Gracias.
    miércoles, 15 de julio de 2009 14:17
  • Hola, el problema lo he resuelto parcialmente moviendo los controles hacia otro tabPage, ya puedo consultar la cantidad de controles y trataré de consultar su contenido y demás, creo que me falta por consultar es el orden interno dentro del arreglo de controles del tabPage ya que el orden de inserción no coincide con el orden en el arrego Controls del page.
    Ejemplo:
                tabp.Controls[0].Name.ToString();//Imprime el nombre de primer textbox insertado.
                tabp.Controls[1].Name.ToString();//Imprime el nombre de un radiobutton insertado de último.

    Muchas gracias por tu colaboración.
    miércoles, 15 de julio de 2009 14:31