Example #1
0
        private void btnOperar_Click(object sender, EventArgs e)
        {
            MiDelegado del1 = new MiDelegado(Form2.Suma);

            del1.Invoke(3, 2);

            MiDelegado del2 = new MiDelegado(this.Resta);

            del2.Invoke(3, 2);

            MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del1, del2);

            del3.Invoke(6, 4);

            MessageBox.Show((del3.Method).ToString());
            MessageBox.Show((del3.Target).ToString());

            string aux = "";

            foreach (Delegate item in del3.GetInvocationList())
            {
                aux += (item.Method).ToString() + "\n";
            }

            MessageBox.Show(aux);


            MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(Form2.Multiplicar));

            Form2.OtraSuma(del1, 10, 9);
        }
Example #2
0
        private void brnOperar_Click(object sender, EventArgs e)
        {
            MiDelegado del = new MiDelegado(Sumar);
            //del.Invoke(3, 2);
            MiDelegado del2 = new MiDelegado(this.Restar);
            //del2(5, 2);
            MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2);

            del3.Invoke(10, 5);

            //MessageBox.Show(del3.Target.ToString());

            //MessageBox.Show(del3.Method.ToString());

            //foreach(MiDelegado d in del3.GetInvocationList())
            //{
            //    MessageBox.Show(d.Method.ToString());
            //}

            MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(Multiplicar));

            del4.Invoke(5, 5);

            MiDelegado2 del5 = new MiDelegado2(OtraSuma);

            del5.Invoke(del, 8, 10);
        }
Example #3
0
        private void btnOperar_Click(object sender, EventArgs e)
        {
            Manejadora manejadora = new Manejadora();
            //El delegado se encarga de invocar y pasar los datos recibidos a la direccion de memoria
            MiDelegado del = new MiDelegado(manejadora.Sumar);

            del.Invoke(3, 2);//Son los enteros que me requiere el metodo Sumar
            //del(5, 2); Se puede poner de ambas maneras

            MiDelegado del2 = new MiDelegado(manejadora.Restar);

            del2.Invoke(3, 2);
            //del2(5, 2);

            MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2); //Combinar lista de invocacion, se combina el primero y el segundo para que el tercero tengo dos metodos

            del3.Invoke(83, 102);                                        //Hace el metodo sumar y restar en un solo delegado, ya que esta combinado

            //MessageBox.Show(del3.Method.ToString()); Me muestra la ultima firma que tiene ese delegado

            MessageBox.Show(del3.Target.ToString());           //Me muestra la instancia de donde esta el metodo

            foreach (Delegate aux in del3.GetInvocationList()) //Muestra todas las firmas que tienen el delegado
            {
                MessageBox.Show(aux.Method.ToString());
            }

            MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del3, new MiDelegado(manejadora.Multiplicar)); //Combina con el delegado 3 que tiene sumar y restar y tambien multiplica

            del4(3, 2);

            MiDelegado2 del5 = new MiDelegado2(manejadora.OtraSuma);

            del5.Invoke(del, 5, 2); //Invocas al delegado y este hace el metodo que tiene cargado, ejemplo del tiene suma
        }
        private void btnBoton4_Click(object sender, EventArgs e)
        {
            MiDelegado del = new MiDelegado(Sumar);

            MessageBox.Show(del.Method.ToString());     // Me devuelve metodo de la lista de invocacion
            Delegate[] lista = del.GetInvocationList(); // Me devuelve lista completa de invocacion
            foreach (Delegate d in lista)
            {
                MessageBox.Show(d.Method.ToString());
            }
            del.Invoke(3, 2); // o del(3,2)

            MiDelegado del2 = new MiDelegado(this.Restar);

            MessageBox.Show((del2.Target).ToString()); //Devuelve la instancia de clase que contiene al metodo que esta en la lista
            del2.Invoke(3, 2);

            MiDelegado del3 = (MiDelegado)MiDelegado.Combine(del, del2);

            del3.Invoke(5, 2);

            MiDelegado del4 = (MiDelegado)MiDelegado.Combine(del, new MiDelegado(this.Multiplicar));

            del4.Invoke(12, 4);

            this.OtraSuma(del, 3, 2);
        }
Example #5
0
        private void btnBoton4_Click(object sender, EventArgs e)
        {
            Manejadora man               = new Manejadora();
            MiDelegado delegado1         = new MiDelegado(Manejadora.Sumar);
            MiDelegado delegado2         = new MiDelegado(man.Restar);
            MiDelegado delegadoCombinado = new MiDelegado((MiDelegado)MiDelegado.Combine(delegado1, delegado2));
            MiDelegado delegado4         = new MiDelegado((MiDelegado)MiDelegado.Combine(delegadoCombinado, new MiDelegado(man.Multiplicar)));

            delegado1.Invoke(3, 5); //(explicita)
            delegado2(2, 5);        //(implicita) Las dos llaman a Invoke.
            delegadoCombinado.Invoke(35, 623);
            MessageBox.Show(delegado1.Method.ToString());
            MessageBox.Show(delegado2.Method.ToString());
            MessageBox.Show(delegadoCombinado.Method.ToString());
            //MessageBox.Show(delegado1.Target.ToString()); TIRA NULL EXCEPTION PORQUE ES ESTATICO
            MessageBox.Show(delegado2.Target.ToString());
            MessageBox.Show(delegadoCombinado.Target.ToString());

            foreach (Delegate item in delegado1.GetInvocationList())
            {
                MessageBox.Show(item.Method.ToString());
            }

            delegado4.Invoke(23, 52);

            OtraSuma(delegado1, 2, 5);
        }
Example #6
0
        static void Main(string[] args)
        {
            //Creo una instancia del tipo de delegado MiDelegado
            MiDelegado llamada = M1;

            //Añadimos varios metodos a un delegado
            llamada += M2;
            llamada += M3;
            llamada += M4;

            //lanzamos el delegado
            llamada();
            //Cuando metodos ahi en la lista de mi delegado
            Console.WriteLine("\n Hay {0} metodos en la lista. \n", llamada.GetInvocationList().GetLength(0));


            Console.WriteLine("------------------");
            //Quitar metodos a un delegado
            llamada -= M2;
            //lanzamos  el delegado
            llamada();

            //Cuando metodos ahi en la lista de mi delegado
            Console.WriteLine("\n Hay {0} metodos en la lista. ", llamada.GetInvocationList().GetLength(0));

            Console.ReadLine();
        }
Example #7
0
        private void btnOperar_Click(object sender, EventArgs e)
        {
            MiDelegado delegado1 = new MiDelegado(Manejadora.Sumar);
            //delegado1.Invoke(8, 2);
            //delegado1(5, 2);
            //------------------------------------
            Manejadora a         = new Manejadora();
            MiDelegado delegado2 = new MiDelegado(a.Restar);
            //delegado2.Invoke(3, 2);
            //-------------------------------------
            MiDelegado delegado3 = (MiDelegado)MiDelegado.Combine(delegado1, delegado2);

            delegado3.Invoke(5, 5);
            //-------------------------------------
            MessageBox.Show(delegado3.Method.ToString()); //indica cual metodo esta usando
            //------------------------------------
            MessageBox.Show(delegado3.Target.ToString()); //indica cual es la instancia del metodo de invocacion
            //-----------------------------------
            string s = "";

            foreach (Delegate d in delegado3.GetInvocationList())
            {
                s += (d.Method).ToString() + "\n";
            }
            //---------------------
            MiDelegado delegado4 = (MiDelegado)MiDelegado.Combine(delegado3, new MiDelegado(a.Multiplicar));

            a.OtraSuma(delegado1, 7, 7);
        }
        public ud9_pract2()
        {
            InitializeComponent();
            threadStart = new ThreadStart(ActualizacionesBackground);

            // Declaración del delegado con la llamada al procedimiento FuncionGenerar
            deleg1 = new MiDelegado(FuncionGenerar);
        }
Example #9
0
    public static void Main()
    {
        OtraClase objOtraClase = new OtraClase ();
        MiDelegado objMiDelegado = new MiDelegado (objOtraClase.Metodo1);

        objMiDelegado += objOtraClase.Metodo2;

        objMiDelegado(4);
    }
Example #10
0
        static void Main(string[] args)
        {
            //Creo una instancia de tipo delegado "MiDelegado"
            MiDelegado llamada = MetodoQueUsaElDelegado;

            llamada("Hola soy el método a través de un delegado!.");
            MetodoConDevolucion("La vivlia premoh", llamada);
            Console.ReadLine();
        }
    static void Main()
    {
        MiDelegado delegado1 = new MiDelegado(CRadio.MensajeRadio);

        delegado1("hola");

        delegado1 = new MiDelegado(CPastel.MensajePastel);

        delegado1("feliz cumpleaños");
    }
Example #12
0
        static void Main(string[] args)
        {
            int        j;
            MiDelegado _delegado = x => x * x;

            //MiDelegado _delegado = Cuadrado;
            j = _delegado(10);
            Console.WriteLine(j);

            Console.ReadLine();
        }
Example #13
0
        private void Form1_Load(object sender, EventArgs e)
        {
            frmDatos   nuevoFrmDatos = new frmDatos();
            MiDelegado miDelegado    = nuevoFrmDatos.ActualizarNombre;



            nuevoFrmDatos.Parent = this;

            nuevoFrmDatos.Show();
        }
Example #14
0
        static void Main(string[] args)
        {
            MiDelegado d1 = A.MetodoA;
            MiDelegado d2 = B.MetodoB;

            Console.WriteLine($"La suma es {d1(10,20)}");
            Console.WriteLine($"La multiplicacion es {d2(10,20)}");
            MiDelegado d = d1 + d2;

            Console.WriteLine($"El resultado es : {d(5,2)}");
        }
Example #15
0
        /*
         * Ejemplo de varias  forma  de sintaxys de una expresion lambda
         *
         *  Esta expresion Lambda devuelve un Boolean
         *   (x,y) => x==y;
         *
         *  Esta expresion Lambda le especificamos que tipo de valor recibe
         *  (int x, string s) => s.Length > x   (esta devolvera verdad cuando el valor de al cadena sea mayor que x)
         *
         *  Expresion Lambda que no recibe ningun parametro
         * () => algunMetodo();
         *
         * Esta expresion Lambda recibe un parametro que se llama 'n' y que recibe la instruciones que estan ente las '{  }'
         *  Midelegado  eldelegado = n => {      }
         *
         *
         *
         */
        static void Main(string[] args)
        {
            int j;
            //Expresion Lamda ( la  primera x es el parametro que recibe nuestra firma del delegado , despues del operado => la expresion o las sentencia que se realizarian en una funcion normal
            MiDelegado eldelegado = x => x * x;

            //LLamada al delegado
            j = eldelegado(10);
            Console.Write(j);

            Console.ReadLine();
        }
Example #16
0
        static void Main(string[] args)
        {
            //LLamada normal sin u sar el delegado
            MetodoQueUsaElDelegado1(" Hola Caracola, soy el método");

            //Creo una instancia del tipo de delegado MiDelegado
            MiDelegado llamada = MetodoQueUsaElDelegado1;

            //Llamada al delegado
            llamada(" Hola pishhha, soy el delegado");

            Console.ReadLine();
        }
Example #17
0
        public static void Main(string[] args)
        {
            //Creamos un objeto del delegado y lo referenciamos a un metgto
            MiDelegado delegado = new MiDelegado(CRadio.MetodoRadio);

            //Ahora por medio de l delegado hacemos uso del metgoto
            delegado("hola a todos");

            //hacemos que apunte a otro metodo
            delegado = new MiDelegado(CPastel.MostrarPastel);
            //ahora invocamos el otro metodo
            delegado("Feliz cumpleanos");
        }
Example #18
0
        static void Main(string[] args)
        {
            // Creo una instancia del tipo de delegado MiDelegado
            MiDelegado llamada = MetodoQueUsaElDelegado;

            llamada("Hola pishhha, soy la instancia del delegado");
            MetodoQueUsaElDelegado("Hola caracola, soy el método");
            llamada = MetodoQueUsaElDelegado1;

            MetodoConDevolucion("Texto recibido", llamada);

            Console.ReadLine();
        }
Example #19
0
 public void AbrirModal(string msj)
 {
     if (this.InvokeRequired)
     {
         MiDelegado d = new MiDelegado(AbrirModal);
         this.Invoke(d, new object[] { msj });
     }
     else
     {
         MessageBox.Show(msj, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
         textBox1.Text = msj;
         label1.Text   = msj;
     }
 }
Example #20
0
        static void Main()
        {
            Console.Title = "Uso de Delegados";

            Console.WriteLine("\n==== Creando delegados ==== \n");

            // Instanciar el delegado llamado MiDelegado
            //MiDelegado llamada = MetodoParaDelegado;
            //MiDelegado llamada = new MiDelegado(MetodoParaDelegado);

            MiDelegado llamada1 = ClaseDeMetodos.Metodo1;

            llamada1("Llamada con método estático");
            MiDelegado llamada2 = new ClaseDeMetodos().Metodo2;

            llamada2("Llamada con método de instancia");
            MiDelegado llamada3 = MetodoParaDelegado;

            llamada3("Metodo para delegado");

            Console.WriteLine("\n================ MULTIDIFUSION =============\n");

            MiDelegado todosDelegado = llamada1 + llamada2;

            todosDelegado += llamada3;
            todosDelegado -= llamada1;
            todosDelegado("Mensaje común a todos los delegados");

            //llamada("hey!");
            //MetodoParaDelegado("holo!");

            //MetodoConDevolucion(10, 5, llamada);

            Console.WriteLine("\n==== Conociendo al delegado ==== \n");
            int nReferencias = todosDelegado.GetInvocationList().GetLength(0);

            Console.WriteLine("Mi delegado todosDelegado tiene {0} referencias", nReferencias);


            Console.WriteLine("\n==== Referencia a metodo anonimo ==== \n");
            OtroDelegado otroDlg = delegate(int x)
            {
                return(x + 2);
            };

            Console.WriteLine(otroDlg(2));

            Console.ReadLine();
        }
    public static void Main()
    {
        Console.WriteLine ("Se inicia el programa");

        // Se crea una instancia de la clase 'OtraClase'
        OtraClase objOtraClase = new OtraClase ();

        Console.WriteLine ("Se añade al objeto delegado el método estático 'Metodo1DeOtraClase'");
        // Añadir a 'objDelegado' un método estático de 'OtraClase'
        // Para añadir un primer método a un objeto delegado, se usa el operador '=' .
        // Pero esto vale solo para el primer método a añadir, el resto de los métodos se añaden
        // con el operador '+=' .
        Console.WriteLine ("Se crea una instancia de la clase 'OtraClase'");
        MiDelegado objDelegado = new MiDelegado (OtraClase.Metodo1DeOtraClase);

        Console.WriteLine ("Se añade al objeto delegado el método no estático 'Metodo2DeOtraClase'");
        // Se añade 'Metodo2DeOtraClase' que no es estático. Ahora usamos el operador
        //'+=' ya que no es el primer método a añadir.
        objDelegado += new MiDelegado (objOtraClase.Metodo2DeOtraClase);

        Console.WriteLine ("Se añade al objeto delegado el método estático 'Metodo1DeEstaClase'");
        // Se añade un método estático de esta clase. No hay para que referirse al nombre de esta
        objDelegado += new MiDelegado (Metodo1DeEstaClase);

        Console.WriteLine ("Se crea una instancia de la clase 'EstaClase'");
        // Crear una instancia de esta clase 'EstaClase'
        EstaClase objEstaClase = new EstaClase ();

        Console.WriteLine ("Se añade al objeto delegado el método no estático 'Metodo2DeEstaClase'");
        // Se añade un método publico de esta clase
        objDelegado += new MiDelegado (objEstaClase.Metodo2DeEstaClase);

        Console.WriteLine ("Se llama a objDelegado objDelegado (8, 3);");
        // Llamar a un método estático que se almacena en 'objDelegado'
        objDelegado (8, 3);

        // Ahora, llamamos a los métodos que están relacionados con los métodos de
        // 'objEstaClase' y los de 'objOtraClase'. Se vió que a 'objDelegado' al llamarlo no le
        // importa si los métodos a añadir son estáticos o públicos.

        // Ahora veremos algunos atajos para añadir métodos a un objeto delegado que se añadieron en la
        // versión 2.0 del lenguaje C# . Es importante tener en cuenta estos atajos para usarlos y también
        // leer código de otros programadores.
        objDelegado += objEstaClase.Metodo2DeEstaClase;
        objDelegado += OtraClase.Metodo1DeOtraClase;

        // Ejecutando el delegado
        objDelegado (10, 20);
    }
Example #22
0
        static void Main(string[] args)
        {
            // Creo una instancia del tipo de delegado MiDelegado
            MiDelegado delegado = M1;

            delegado += M2;
            delegado += M3;
            delegado();     // M1,M2,M3
            delegado -= M2; // M1,M3
            delegado();

            Console.WriteLine("Hay {0} métodos en la lista.", delegado.GetInvocationList().GetLength(0));

            Console.ReadLine();
        }
Example #23
0
        static void Main(string[] args)
        {
            MiDelegado delegado = new MiDelegado(CRadio.MetodoRadio);

            //Usamo el delegado
            delegado("Hola a todos");

            //Hacemos otro apunte a una nueva clase
            delegado = new MiDelegado(Cpastel.MostrarPastel);

            //Ahora invocamos el otro metodo
            delegado("Feliz cumpleaños");

            Console.Read();
        }
Example #24
0
        private void button1_Click_1(object sender, EventArgs e)
        {
            MiDelegado del1 = () =>
            {
                x = Convert.ToInt32(Txt1.Text);
                y = Convert.ToInt32(Txt2.Text);
                // Tr.Text = Convert.ToString((x + y));
            };


            imprimir(del1);

            //Longitud lg = (s) => (s.Length > 5);
            //MessageBox.Show(lg(Txt1.Text).ToString());
        }
Example #25
0
        static void Main(string[] args)
        {
            // Creamos un objeto del delegado y lo refenciamos a un metodo
            MiDelegado delegado = new MiDelegado(Clase.Radio.MetRadio);

            // Ahora por medio del delegado hacemos uso del metodo
            delegado("Hola esta es la emisora 0.31");

            // Hacemos que apunte a otro metodo
            delegado = new MiDelegado(Clase.Anuncio.MetAnuncio);

            // Ahora invocamos el otro metodo
            delegado("Pastel come mucho");

            System.Threading.Thread.Sleep(4000);
        }
Example #26
0
        private void Operar_Click(object sender, EventArgs e)
        {
            MiDelegado delegado = new MiDelegado(Manejadora.Sumar);

            delegado.Invoke(3, 2); // EXPLICITA
            delegado(3, 2);        // IMPLICITA

            Manejadora manejadoraParametro = new Manejadora();
            MiDelegado delegado2           = new MiDelegado(manejadoraParametro.Restar);

            delegado2(3, 0);

            Delegate delegadoTres = MiDelegado.Combine(delegado, delegado2);

            //MiDelegado delegadoCuatro = MiDelegado.Combine(delegadoTres, new MiDelegado();
        }
Example #27
0
        static void Main(string[] args)
        {
            // Uso del delegado en metodo de la clase radio

            MiDelegado delegado = new MiDelegado(CRadio.metodoRadio);

            delegado("Hola a todos");


            // Uso del delegado en metodo de la clase pastel

            delegado = new MiDelegado(CPastel.mostrarPastel);

            delegado("Good Day");

            Thread.Sleep(2000000);
        }
Example #28
0
        static void Main(string[] args)
        {
            //LLamada normal sin u sar el delegado
            MetodoQueUsaElDelegado1(" Hola Caracola, soy el método");

            //Creo una instancia del tipo de delegado MiDelegado
            MiDelegado llamada = MetodoQueUsaElDelegado1;

            //Llamada al delegado
            llamada(" Hola pishhha, soy el delegado");

            //LLamada al metodo que recibe otro metodo como parametro a atraves de su delegado
            metodoConDevolucion("Texto Recibido", llamada);


            Console.ReadLine();
        }
Example #29
0
        static void Main(string[] args)
        {
            Console.Title = "Tutorial C# intermedio 9 --- Delegados I";

            // Creamos un objeto del delegado y lo referenciamos a un método
            MiDelegado delegado = new MiDelegado(CRadio.MetodoRadio);

            // Ahora por medio del delegado hacemos uso del método
            delegado("Hola a todos");

            Console.WriteLine();

            // Hacemos que apunte a otro método
            delegado = new MiDelegado(CPastel.MostrarPastel);

            // Ahora invocamos el otro método
            delegado("Feliz cumpleaños");
        }
Example #30
0
        static void Main(string[] args)
        {
            MiDelegado d1 = A.MetodoA;
            MiDelegado d2 = B.MetodoB;

            //Invocamos delegados de forma separa
            Console.WriteLine($"La suma             es {d1(10,20)}");
            Console.WriteLine($"La multiplicacion   es {d2(10,20)}");
            Console.WriteLine();

            //Delegado multicast que une los 2 metodos
            MiDelegado d = d1 + d2;

            Console.WriteLine($"El resultado es {d(10,20)}");//Regresa el resultado del ultimo metodo invocado
            Console.WriteLine();

            Console.WriteLine();
        }
Example #31
0
        static void Main(string[] args)
        {
            MiDelegado llamadaAVarios = M1;

            llamadaAVarios += M2;
            llamadaAVarios += M3;

            //llama a los métodos M1,M2,M3
            llamadaAVarios();


            //Ver cuantos métodos hay en la lista
            Console.WriteLine("\n\nHay {0} métodos en la lista.\n\n", llamadaAVarios.GetInvocationList().GetLength(0));
            //Quitamos M1, solo llamará a M2 y M3
            llamadaAVarios -= M1;
            llamadaAVarios();

            //Volvemos a ver cuantos métodos hay en la lista
            Console.WriteLine("\n\nHay {0} métodos en la lista.\n\n", llamadaAVarios.GetInvocationList().GetLength(0));
            Console.ReadKey();
        }
    public static void Main()
    {
        Console.WriteLine ("Se inicia el programa");

        // Se crea un objeto de la clase 'OtraClase'
        OtraClase objOtraClase = new OtraClase ();

        // Se crea un objeto delegado y se le asigna un método, en este ejemplo le
        // asignamos solo un método, pero se le pueden asignar más.
        // Crear un objeto delegado es muy similar a crear un objeto con una clase, la
        // diferencia es que le asignamos un método, en ves de argumentos.
        // El método no se esta llamando por eso no se utiliza los paréntesis
        // 'objOtraClase.Metodo1'
        MiDelegado objDelegado = new MiDelegado (objOtraClase.Metodo1);

        // Se crea una variable de tipo int y se le asigna el valor de retorno
        // del objeto delegado, que es el mismo retorno de el método anteriormente asignado
        int retorno = objDelegado (5); // Se hace la llamada de la misma forma que un método

        // Muestra el valor de retorno
        Console.WriteLine ("El valor devuelto es {0}", retorno);
    }
        private void btnOperar_Click(object sender, EventArgs e)
        {
            MiDelegado d = new MiDelegado(Manejadora.Sumar);

            d.Invoke(3, 2);
            d(3, 2);
            MiDelegado dr = new MiDelegado((new Manejadora()).Restar);

            dr(3, 2);
            MiDelegado delegadoCombinado = (MiDelegado)MiDelegado.Combine(d, dr);

            delegadoCombinado.Invoke(4, 2);
            MessageBox.Show(dr.Method.ToString() + " - " + dr.Target.ToString());
            foreach (MiDelegado item in delegadoCombinado.GetInvocationList())
            {
                MessageBox.Show(item.Method.ToString());
            }
            MiDelegado d4 = (MiDelegado)MiDelegado.Combine(delegadoCombinado, new MiDelegado((new Manejadora()).Multiplicar));

            d4(3, 4);
            (new Manejadora()).OtraSuma(d, 3, 2);
        }