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

¿Como generar un evento desde un UserControl creado dinamicamente...

Estas en el tema de ¿Como generar un evento desde un UserControl creado dinamicamente... en el foro de .NET en Foros del Web. ¿Como generar un evento desde un UserControl creado dinamicamente y capturarlo en el Form principal? Hola, tengo creado un User control que funciona correctamente creando ...
  #1 (permalink)  
Antiguo 19/09/2012, 09:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años, 6 meses
Puntos: 0
Pregunta ¿Como generar un evento desde un UserControl creado dinamicamente...

¿Como generar un evento desde un UserControl creado dinamicamente y capturarlo en el Form principal?

Hola, tengo creado un User control que funciona correctamente creando instancias del mismo en tiempo de ejecución.

El mismo funciona prácticamente de forma autónoma pues no tiene botones pero ahora necesito agregar un par de botones al mismo y que esos botones generen un evento que sea capturado en el Form principal y ademas pasar parámetros con el evento capturado.

¿Como puedo lograr esto?

Encontré Info pero solo sirve para controles agregados en tiempo de diseño.
  #2 (permalink)  
Antiguo 19/09/2012, 10:21
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: ¿Como generar un evento desde un UserControl creado dinamicamente...

Bueno si buscaras de una forma correcta en san google encontrarías la solución

Esta es la clase y se crea un evento publico

Código C#:
Ver original
  1. public partial class Sample: UserControl
  2. {
  3.     public event EventHandler TextboxValidated;
  4.  
  5.     public Sample()
  6.     {
  7.         InitializeComponent();
  8.     }
  9.  
  10.  
  11.     private void TextBox_Validated(object sender, EventArgs e)
  12.     {
  13.         // llamando el evento de validar
  14.         if (this.TextboxValidated != null) this.TextboxValidated(sender, e);
  15.     }
  16. }

En tu formulario

Código C#:
Ver original
  1. public partial class MainForm : Form
  2. {
  3.     private Sample sampleUserControl = new Sample();
  4.  
  5.     public MainForm()
  6.     {
  7.         this.InitializeComponent();
  8.         sampleUserControl.TextboxValidated += new EventHandler(this.CustomEvent_Handler);
  9.     }
  10.     private void CustomEvent_Handler(object sender, EventArgs e)
  11.     {
  12.        // lo que quieras
  13.     }
  14. }
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 19/09/2012, 12:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 13 años, 6 meses
Puntos: 0
De acuerdo Respuesta: ¿Como generar un evento desde un UserControl creado dinamicamente...

Listo, solucionado, agregue en el UserControl un Public Event y dentro del botón del User Control el AddHandler con el AddressOf de la rutina que atiende el evento en el Form1 y luego hago un RaiseEvent.

Solo me queda una duda ¿Seria conveniente que luego del RaiseEvent coloque un RemoveHandler?

¿O debería colocar el AddHandler en otra ubicación?

Edito y me autorespondo:

Ya me di cuenta que solo se debe generar un AddHandler porque si no se disparan los eventos tantas veces como Handler se hayan agregado; así que creé un booleano que me indica si ya se creo el Handler o no.

Última edición por E_Blue; 19/09/2012 a las 12:26

Etiquetas: event, eventos, usercontrol, capturar
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 08:33.