Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. namespace Articulos.Cap03
  2. {
  3.     public delegate void DivisorEventHandler(object o, DivisionEventArgs e);
  4.    
  5.     // Representa una clase con los argumentos del evento del
  6.     // evento de la operación de división:
  7.     public class DivisionEventArgs : EventArgs
  8.     {
  9.         // Por cada evento se registra el valor de la operación,
  10.         // y se guarda en el campo de sólo lectura `numero`:
  11.         public readonly int numero;
  12.        
  13.         public DivisionEventArgs(int num)
  14.         {
  15.             numero = num;
  16.         }
  17.     }
  18.  
  19.     // Clase interesada en escuchar las operaciones de
  20.     // división de dos maneras: en la consola y
  21.     // con un mensaje sobre el control MessageBox:
  22.     public class SubscriptorDivision
  23.     {
  24.         public void MostrarEnConsola(object o, DivisionEventArgs e)
  25.         {
  26.             Console.WriteLine("Evento. Dividendo de 7: {0}", e.numero);
  27.         }
  28.        
  29.         public void MostrarEnMessageBox(object o, DivisionEventArgs e)
  30.         {
  31.             MessageBox.Show("Evento. Dividendo de 7: " + e.numero.ToString());
  32.         }
  33.     }
  34.    
  35.     public class Aplicacion
  36.     {
  37.         // Evento asociado con la división por 7:
  38.         public static event DivisorEventHandler Divisor7;
  39.        
  40.         public static void Main()
  41.         {
  42.             SubscriptorDivision dbsl = new SubscriptorDivision();
  43.            
  44.             Divisor7 += new DivisorEventHandler(dbsl.MostrarEnConsola);
  45.            
  46.             Divisor7 += new DivisorEventHandler(dbsl.MostrarEnMessageBox);
  47.            
  48.             GenerarNumeros();
  49.         }
  50.        
  51.         // Receptor de cada cambio (operación de división por 7):
  52.         public static void OnDivisionPor7(DivisionEventArgs e)
  53.         {
  54.             if (Divisor7 != null)
  55.             {
  56.                 Divisor7(new object(), e);
  57.             }
  58.         }
  59.        
  60.         public static void GenerarNumeros()
  61.         {
  62.             for (int i = 1; i <= 100; ++i)
  63.             {
  64.                 if ( i % 7 == 0)
  65.                 {
  66.                     DivisionEventArgs e1 = new DivisionEventArgs(i);
  67.                    
  68.                     OnDivisionPor7(e1);
  69.                 }
  70.             }
  71.         }
  72.     }
  73. }