none
Eventos de un User Control RRS feed

  • Pregunta

  • Saludos, el asunto es el siguiente sucede que necesito como guia la creacion de un user control que tenga la siguiente caracteristica (muy simple parece), pero que no he podido realizar.
    El ejemplo que quisiera ver seria mas o menos asi: un control de usuario que contenga una caja de texto y un boton, una pagina con una referencia del user control creado y un label en la misma pagina.
    la funcionalidad del user control seria la de poder escribir contenido en la caja de texo del user control y al presionar clic en el boton del user control el contenido de la caja de texto debe mostrarse en la propiedad text del label que pertenece a la pagina.
    me gustaria saber como acceder a la propiedad click del boton para indicarle a que label le va a asignar lo que se haya escrito e la caja de texto del user control.
    este es un ejemplo de guia si puedo acceder a propiedades propias de controles desde la pagina que los contiene podria realizar la aplicacion que necesito.
    que de hecho es con una grilla y el evento seria el selectedindexchanged.
    las herramientas son VS 2008 o 2005 y de preferencia visual basic.
    graicas por su colaboracion.
    miércoles, 22 de julio de 2009 6:04

Respuestas

  • Hola kenny,

    pues, para que te hagas una idea, yo haría algo tal que así:

    UserControl.ascx

    public class MyControl:UserControl
    {
          #region Eventos del control
    
          public event EventHandler buttonClicked;
    
          #endregion
    
          #region Properties
    
          public string TextBoxValue
          {
                get
                {
                     return this.TextBox1.Text;
                }
           }
    
          #endregion
    
         /* Creamos los controles TextBox y Button. Esta parte la podemos hacer desde el diseñador, pero pongo la definición de la caja de texto y el botón para que quede claro. */
    
        private TextBox TextBox1;
       
        private Button Button1;
          
         //Al hacer click en el button lanzamos nuestro propio evento
    
         protected void Button1_Click(object sender, EventArgs e)
         {
                //Lanzamos nuestro evento
               buttonClicked(sender, e);  
         }
    }


    Una vez definido el control (esto es un esquema, no esta el código al completo. Lo mejor es que añadas los controles desde el diseñador, pero quédate con la idea de la propiedad TextBoxValue y del evento buttonClicked) ahora lo añadimos a nuestra página como otro control cualquiera (arrastrandolo desde el explorador de la solución a nuestra página). añadimos el siguiente código:

     

    .
    .
    .
    //En el evento Page_Load, capturaremos el evento buttonClicked
    //de nuestro control de usuario
    
    
    protected void Page_Load(object sender, EventArgs e)
    {
            myUserControl1.buttonClicked+=new EventHandler(BottonPulsado);
    }
    
    //Aqui podemos obtener el valor del textbox del control de usuario
    //mediante la propiedad que hemos definido antes
    
    private void BottonPulsado(object sender, EventArgs e)
    {
           //Ponemos la propiedad Text del label de la página que contiene el user control al mismo valor que la propiedad TextBoxValue del user control.
           this.Label1.Text=myUserControl1.TextBoxValue;
    }
    
    .
    .
    .
    Y ya está. Es una de las posibilidades para solucionar tu duda.

    Espero que te sirva de ayuda!
    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta UserQD86 miércoles, 22 de julio de 2009 18:11
    miércoles, 22 de julio de 2009 8:27

Todas las respuestas

  • Hola kenny,

    pues, para que te hagas una idea, yo haría algo tal que así:

    UserControl.ascx

    public class MyControl:UserControl
    {
          #region Eventos del control
    
          public event EventHandler buttonClicked;
    
          #endregion
    
          #region Properties
    
          public string TextBoxValue
          {
                get
                {
                     return this.TextBox1.Text;
                }
           }
    
          #endregion
    
         /* Creamos los controles TextBox y Button. Esta parte la podemos hacer desde el diseñador, pero pongo la definición de la caja de texto y el botón para que quede claro. */
    
        private TextBox TextBox1;
       
        private Button Button1;
          
         //Al hacer click en el button lanzamos nuestro propio evento
    
         protected void Button1_Click(object sender, EventArgs e)
         {
                //Lanzamos nuestro evento
               buttonClicked(sender, e);  
         }
    }


    Una vez definido el control (esto es un esquema, no esta el código al completo. Lo mejor es que añadas los controles desde el diseñador, pero quédate con la idea de la propiedad TextBoxValue y del evento buttonClicked) ahora lo añadimos a nuestra página como otro control cualquiera (arrastrandolo desde el explorador de la solución a nuestra página). añadimos el siguiente código:

     

    .
    .
    .
    //En el evento Page_Load, capturaremos el evento buttonClicked
    //de nuestro control de usuario
    
    
    protected void Page_Load(object sender, EventArgs e)
    {
            myUserControl1.buttonClicked+=new EventHandler(BottonPulsado);
    }
    
    //Aqui podemos obtener el valor del textbox del control de usuario
    //mediante la propiedad que hemos definido antes
    
    private void BottonPulsado(object sender, EventArgs e)
    {
           //Ponemos la propiedad Text del label de la página que contiene el user control al mismo valor que la propiedad TextBoxValue del user control.
           this.Label1.Text=myUserControl1.TextBoxValue;
    }
    
    .
    .
    .
    Y ya está. Es una de las posibilidades para solucionar tu duda.

    Espero que te sirva de ayuda!
    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta UserQD86 miércoles, 22 de julio de 2009 18:11
    miércoles, 22 de julio de 2009 8:27
  • Muchas gracias javier me ha sido de mucha utilidad tu ejemplo era justo lo que necesitaba. ahora podre guiarme de este ejemplo para hacer lo que verdaderamente necesito es bastante funcional este ejemplo.

    miércoles, 22 de julio de 2009 18:15