• Domingo 22 de Diciembre de 2024, 09:53

Autor Tema:  como usar eventos y delegados  (Leído 1672 veces)

Sined99

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
como usar eventos y delegados
« en: Lunes 13 de Junio de 2011, 11:33 »
0
Hola muy buenas, a ver si alguien me puede hechar una mano, tengo un problema con eventos y delegados, voy comentar primero lo que quiero hacer haber si es una buena solucion el usar eventos, resulta que tengo un form, desde el que quiero cerrar cualquier form abierto, es decir cuando se deen ciertas condiciones en el form principal quiero que los demas forms abiertos cierren automaticamente, lo que he pensado es hacer, un evento y que cuando se deen esas condiciones pues lanzar ese evento y los forms abiertos(que estaran suscritos a ese evento) pues que se cierren, el problema es que no lo consigo, he de decir que es la primera vez que intento usar eventos y delegados y no se muy bien como hacerlo, ¿alguien me puede dar alguna pista?, ya he mirado varios ejemplos y no logro hacerlo funcionar.

Un saludo y muchas gracias.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: como usar eventos y delegados
« Respuesta #1 en: Lunes 13 de Junio de 2011, 16:31 »
0
Buenas, te paso un ejemplo, en este utilizo una clase solo para el evento:

El formulario principal:
Código: C#
  1. public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.            
  8.         //el boton abre nuevas ventanas
  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             Form2 formulario = new Form2();
  12.             formulario.Show();
  13.         }
  14.                
  15.         //este las cierra todas
  16.         private void CerrarVentanas_Click(object sender, EventArgs e)
  17.         {
  18.             ClaseEvento.LanzarEvento();
  19.         }
  20.     }
  21.  

El/los formulario/s secundario/s:
Código: C#
  1. public Form2()
  2.         {
  3.             InitializeComponent();
  4.         }
  5.  
  6.         private void Form2_Load(object sender, EventArgs e)
  7.         {
  8.             ClaseEvento.El_evento += new ClaseEvento.Delegado(ClaseEvento_El_evento);
  9.         }
  10.          
  11.         private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  12.         {
  13.             ClaseEvento.El_evento -= new ClaseEvento.Delegado(ClaseEvento_El_evento);
  14.         }
  15.  
  16.         void ClaseEvento_El_evento()
  17.         {
  18.             this.Close();
  19.         }
  20.  

La clase con el evento:
Código: C#
  1. class ClaseEvento
  2.     {
  3.         public delegate void Delegado();
  4.         public static event Delegado El_evento;
  5.        
  6.         public static void LanzarEvento()
  7.         {
  8.             if (El_evento != null) El_evento();
  9.         }
  10.     }
  11.  

Como ves es muy sencillo, cualquier duda pregunta. Un saludo

Sined99

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
Re: como usar eventos y delegados
« Respuesta #2 en: Martes 14 de Junio de 2011, 08:32 »
0
Cita de: "tannke"
Buenas, te paso un ejemplo, en este utilizo una clase solo para el evento:

El formulario principal:
Código: C#
  1. public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.            
  8.         //el boton abre nuevas ventanas
  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             Form2 formulario = new Form2();
  12.             formulario.Show();
  13.         }
  14.                
  15.         //este las cierra todas
  16.         private void CerrarVentanas_Click(object sender, EventArgs e)
  17.         {
  18.             ClaseEvento.LanzarEvento();
  19.         }
  20.     }
  21.  

El/los formulario/s secundario/s:
Código: C#
  1. public Form2()
  2.         {
  3.             InitializeComponent();
  4.         }
  5.  
  6.         private void Form2_Load(object sender, EventArgs e)
  7.         {
  8.             ClaseEvento.El_evento += new ClaseEvento.Delegado(ClaseEvento_El_evento);
  9.         }
  10.          
  11.         private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  12.         {
  13.             ClaseEvento.El_evento -= new ClaseEvento.Delegado(ClaseEvento_El_evento);
  14.         }
  15.  
  16.         void ClaseEvento_El_evento()
  17.         {
  18.             this.Close();
  19.         }
  20.  

La clase con el evento:
Código: C#
  1. class ClaseEvento
  2.     {
  3.         public delegate void Delegado();
  4.         public static event Delegado El_evento;
  5.        
  6.         public static void LanzarEvento()
  7.         {
  8.             if (El_evento != null) El_evento();
  9.         }
  10.     }
  11.  

Como ves es muy sencillo, cualquier duda pregunta. Un saludo




Muchas gracias, por contestar, lo voy a probar y ya te contare, pero ahora viendo este ejemplo me quedo bastante mas claro todo, muchas gracias!!!
Un saludo.

Sined99

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
Re: como usar eventos y delegados
« Respuesta #3 en: Miércoles 15 de Junio de 2011, 10:41 »
0
Muchisimas gracias!, lo he probado y es justamente lo que necesitaba, funciona perfectamente de nuevo muchas gracias!

Un saludo