none
Modificar, en un evento, controles creados en otro.

    Pregunta

  • Hola! Como les vas?

     

    Veran, en el evento Click de un boton tengo esto:

    //Creo boton//

    Button BGeneral = new Button();

    //Configuro sus propiedades

    BGeneral.Location = new System.Drawing.Point(3,3);

    BGeneral.Size = new System.Drawing.Size(200, 33);

    BGeneral.Text = "General";

    //Los agrego al Form

    This.Controls.Add(BGeneral);

     

    Y se crea en el Form, todo bien. Lo que quiero es que, desde un evento Click de OTRO boton, modificar, por ejemplo, su texto.

     

    Pero nose como obtendria una colecion de los botones creados o algo parecido, si es que de eso se trata.

     

    Gracias.

    Salu2.

     

    sábado, 01 de marzo de 2008 5:18

Respuestas

  • bueno lo que tienes es que encontrar el control que es el panel y despues dentro de este el otro que buscas

    mira este ejemplo

     

    Code Snippet

    foreach (Control control in this.Controls)

    {

    if (control.Name == "panel1")

    {

    foreach (Control c in control.Controls)

    {

    if (c.Name == "button1")

    {

    c.Text = "Nuevo valor";

    break;

    }

    }

    }

    }

     

     

    sábado, 01 de marzo de 2008 23:51

Todas las respuestas

  • Mira una via es que pongas ese boton como privado dentro de tu clase del formulario y asi no vas a tener problemas para acceder a el, otra via es lo agregas a los controles del formulario con un Name especifico y luego lo buscas en la lista de controles con ese nombre, Aqui te va un ejemplo:

     

    Code Snippet

    private void button1_Click(object sender, EventArgs e)

    {//Aqui se agrega el boton3

    Button boton3 = new Button();

    boton3.Name = "boton3";

    boton3.Text = "boton3";

    this.Controls.Add(boton3);

    }

     

    private void button2_Click(object sender, EventArgs e)

    {//de esta forma se obtiene el boton3

    foreach(Control control in this.Controls)

    {

    if (control.Name == "boton3")

    {

    Button boton3 = control as Button;

    boton3.Text = "Otro text";

    }

    }

    }

     

    Espero que te sirva.

    saludos

    sábado, 01 de marzo de 2008 17:44
  • Hola. Gracias por responder.

     

    La primera forma que me dices, no me es posible hacerla. Porque solo se crea cuando entro ahi y no puedo llamarla luego... me da error. O quiza no te estoy entendiendo bien.

     

    La segundo que, funciona bien, no logra lo que quiero. Enrealidad es que el boton que creo NO lo agrego al Formulario, sino, a un Panel (aunq yo creo que este todo contenido en el formulario vendria a ser lo mismo). Y, ese panel, lo creo justo antes de crear al boton.

     

    Entonces, en el foreach que, porcierto no teni ni idea de com funcionaba, gracias, nunca lo encuentra. Y no puedo poner el nombre del Panel porque todavia no se ha creado y daria error.

     

    Disculpa si no puse la info sobre el Panel que creo anteriormente, Pense que no seria necesario.

     

     

    Gracias.

    Salu2.

    sábado, 01 de marzo de 2008 18:44
  • bueno lo que tienes es que encontrar el control que es el panel y despues dentro de este el otro que buscas

    mira este ejemplo

     

    Code Snippet

    foreach (Control control in this.Controls)

    {

    if (control.Name == "panel1")

    {

    foreach (Control c in control.Controls)

    {

    if (c.Name == "button1")

    {

    c.Text = "Nuevo valor";

    break;

    }

    }

    }

    }

     

     

    sábado, 01 de marzo de 2008 23:51
  •  

    Gracias. Tienes razon, por ahi iva la cosa. Problema resuelto =)

     

    martes, 04 de marzo de 2008 5:51