• Domingo 17 de Noviembre de 2024, 23:28

Autor Tema:  Realizar una funcion para varios botones.  (Leído 1541 veces)

oosauronoo

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Realizar una funcion para varios botones.
« en: Viernes 4 de Febrero de 2011, 00:21 »
0
Os explico un poco.
Estoy haciendo un programa y necesito que al hacer click en uno de los varios botones que tengo (button1, button2, button3...) ejecute una funcion que cambie la opacidad del boton clicado, es decir que si pulso el button3, acceda a esa funcion comun para todos pero reciba que es el button3 y solo cambie la opacidad de este.

Algo en plan button(x).opacity=0; recibiendo x como el numero de boton, sinceramente no tengo ni idea xD haber si podeis echarme una manita.

Gracias

yuyokun

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Realizar una funcion para varios botones.
« Respuesta #1 en: Viernes 4 de Febrero de 2011, 02:00 »
0
hey hola buenos tardes.[depende de la hora claro]
mira una vez tuve el mismo problema y lo solucione de una forma no muy ortodoxa si pudieramos llamarlo asi
boy suponer que los botones estan sobre una forma [WindowsForms] al igual que mucho objetos estos tienen una coleccion de objetos valga la redundancia
entonces tus botones se ecuentran dentro de esta coleccion, ahora ballamos un poco al codigo

//primero que nada hacemos la funccion que se va a ejecutar en los botones que la llamare "BotonPresionado"
//la funcion no regresa nada por lo tanto usamos void, le pasamos un valor de tipo objeto lo nombramos "sndr" para referirnos a el como un tipo de sender
private void BotonPresionado(object sndr)
        {
            //dentro del ciclo del foreach lo que hacemos es buscar dentro de la lista de controlroles del formulario [this.Controls]
            foreach(object objeto in this.Controls)//cada pasada del ciclo el objeto de se guardara temporalmente en la variable "objeto"
            {
                if (objeto == sndr) //cuando objeto igual al objeto sndr que mandamos por medio de la funcion sabras que boton fue presionado
                {
                    //En este ejemplo solo mandamos un mensaje con el nombre del ejemplo
                    MessageBox.Show((objeto as Button).Name );
                }
            }
        }

ahora solo tendras que poner la funcion dentro de cada boton, ejemplo :

 private void button1_Click(object sender, EventArgs e)
        {
            BotonPresionado(sender);
        }

para tu problema se me ocurre pasar el objeto por referencia
        private void BotonPresionado(ref object sndr)

y en lugar de la instruccion del message box poner
algo asi                
                     (objeto as Button).opacity = 50;


bueno por mi parte es todo espero y haya podido ayudarte

oosauronoo

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Realizar una funcion para varios botones.
« Respuesta #2 en: Viernes 4 de Febrero de 2011, 11:43 »
0
Tengo un pequeño problema con tu solucion.
Se me olvido comentar que mi proyecto es para windows phone 7, ese codigo me solucionaria el problema para un proyecto normal de windows, pero en WP7 this.controls no parece funcionar :(

Gracias de todas formas.