Foros del Web » Programación para mayores de 30 ;) » .NET »

Control personalizado

Estas en el tema de Control personalizado en el foro de .NET en Foros del Web. Estoy desarrollando un control de usuario para una aplicación en el cual se incluyen varios controles como un picturebox y un checkbox lo que quiero ...
  #1 (permalink)  
Antiguo 23/11/2011, 13:53
Avatar de omar190  
Fecha de Ingreso: septiembre-2008
Mensajes: 191
Antigüedad: 16 años, 2 meses
Puntos: 4
Control personalizado

Estoy desarrollando un control de usuario para una aplicación en el cual se incluyen varios controles como un picturebox y un checkbox lo que quiero es crear algun evento que al momento de marcar el checkbox este me desencadene el evento y pueda ser usado en el form en el que se inserte el control, por ejemplo el checkbox tiene el evento checkedchange que este mismo evento se pudiera desencadenar en mi control una vez incrustado en el formulario destino.

Alguien me pudiera dar un ejemplo o alguna referencia se los agradeceria
  #2 (permalink)  
Antiguo 23/11/2011, 15:42
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Control personalizado

Buenas, te dejo un ejemplo:


Lo primero que debes hacer es crear una clase derivada de EventArgs, para pasar los argumentos (se puede obviar este paso si no se quieren pasar argumentos).
En el caso del ejemplo usamos la clase ya definida EventArgs.


Código C#:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace PruebasTablas
  11. {
  12.  
  13.    
  14.     //Se especifica el delegado para el evento
  15.     public delegate void ValorCambiadoEventHandler(object sender,EventArgs e);
  16.  
  17.     public partial class Alarma : UserControl
  18.     {
  19.        
  20.        /*
  21.          Se crea una clase que define el evento, que si te fijas utiliza el delegado          anteriormente creado
  22.    */
  23.         public event ValorCambiadoEventHandler ValorCambiado;        
  24.  
  25.         /*
  26.          * Método desde el cual se genera el evento
  27.          */
  28.         private void OnValorCambiado(object sender,EventArgs e)
  29.         {
  30.             if (ValorCambiado != null)
  31.             {
  32.                 ValorCambiado(this, e);
  33.             }
  34.         }
  35.  
  36.         private void form_Changed(object sender, EventArgs e)
  37.         {
  38.             MessageBox.Show("Se envío el evento desde el objeto de tipo: "+sender.GetType());
  39.         }
  40.  
  41.         public Alarma()
  42.         {
  43.             InitializeComponent();  
  44.             /*Aquí le estás indicando que cuando se dispare el evento CheckedChanged  del checkbox se ejecute la función  OnValorCambiado, la cual a su vez dispara el evento que tu quieres en UserControl
  45.   */  
  46.             checkBox1.CheckedChanged += new EventHandler(OnValorCambiado);
  47.            
  48.             /*Aquí indicas que método se ejecuta cuando se dispara el evento ValorCambiado del UserControl*/
  49.             this.ValorCambiado += new ValorCambiadoEventHandler(form_Changed);
  50.         }
  51.     }
  52. }

Última edición por alexg88; 23/11/2011 a las 15:56
  #3 (permalink)  
Antiguo 26/11/2011, 12:00
Avatar de omar190  
Fecha de Ingreso: septiembre-2008
Mensajes: 191
Antigüedad: 16 años, 2 meses
Puntos: 4
Respuesta: Control personalizado

Cita:
Iniciado por alexg88 Ver Mensaje
Buenas, te dejo un ejemplo:


Lo primero que debes hacer es crear una clase derivada de EventArgs, para pasar los argumentos (se puede obviar este paso si no se quieren pasar argumentos).
En el caso del ejemplo usamos la clase ya definida EventArgs.


Código C#:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace PruebasTablas
  11. {
  12.  
  13.    
  14.     //Se especifica el delegado para el evento
  15.     public delegate void ValorCambiadoEventHandler(object sender,EventArgs e);
  16.  
  17.     public partial class Alarma : UserControl
  18.     {
  19.        
  20.        /*
  21.          Se crea una clase que define el evento, que si te fijas utiliza el delegado          anteriormente creado
  22.    */
  23.         public event ValorCambiadoEventHandler ValorCambiado;        
  24.  
  25.         /*
  26.          * Método desde el cual se genera el evento
  27.          */
  28.         private void OnValorCambiado(object sender,EventArgs e)
  29.         {
  30.             if (ValorCambiado != null)
  31.             {
  32.                 ValorCambiado(this, e);
  33.             }
  34.         }
  35.  
  36.         private void form_Changed(object sender, EventArgs e)
  37.         {
  38.             MessageBox.Show("Se envío el evento desde el objeto de tipo: "+sender.GetType());
  39.         }
  40.  
  41.         public Alarma()
  42.         {
  43.             InitializeComponent();  
  44.             /*Aquí le estás indicando que cuando se dispare el evento CheckedChanged  del checkbox se ejecute la función  OnValorCambiado, la cual a su vez dispara el evento que tu quieres en UserControl
  45.   */  
  46.             checkBox1.CheckedChanged += new EventHandler(OnValorCambiado);
  47.            
  48.             /*Aquí indicas que método se ejecuta cuando se dispara el evento ValorCambiado del UserControl*/
  49.             this.ValorCambiado += new ValorCambiadoEventHandler(form_Changed);
  50.         }
  51.     }
  52. }
Gracias por la respuesta me fue de utilidad, tambien encontre otra forma de implementarlo en VB. NET,

Código vb:
Ver original
  1. class Control
  2.    Public Event CheckedObs(ByVal sender As System.Object, ByVal value As Boolean)
  3.  
  4. 'Evento del checkbox donde se desencadena el evento publico
  5. Public Sub chkSeleccionar_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkSeleccionar.CheckedChanged
  6.         RaiseEvent CheckedObs(Me, Me.chkSeleccionar.Checked)
  7. End Sub
  8.  
  9. End class

Etiquetas: control, personalizado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:24.