ASP.NET - Sobre eventos

 
Vista:

Sobre eventos

Publicado por Pableras (18 intervenciones) el 02/04/2007 10:59:31
Hola, qué tal ??

He hecho un calendario que tiene 2 combos arriba(para el año y el mes) y un montón de botones abajo, los días(puestos en pequeñito), que se visualizan o se ocultan según el año y el mes que haya seleccionado (los combos tienen el AutoPostBack a true).

Tengo 36 botones en total (yo utilizo 36, el porqué es lo de menos)

Quiero que cuando pinche en uno, se seleccione, es decir, que cambie de color (cambiar la propiedad BackgroundColor del botón).

Pero claro, tengo 36 botones, y mi pregunta es:

Tengo que poner 36 eventos onclick , con esa línea de código (la de cambiar el color de fondo del botón) , uno para cada botón??? Es que me parece una burrada el ponerte a meter 36 eventos onclick en el codigo y muy poco elegante además.

No hay algo que se pueda hacer (no sé si con los "delegados" esos que llaman) para que no haya que meter esos 36 eventos, y que se llamara automáticamente a una función a la que cuando se hace click en un botón cualquiera se acceda(viendo cuál de los 36 botones ha provocado el onclick)???

Muchísimas gracias en cualquier caso . ciauuuuuu
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 56
Bronce
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

RE:Sobre eventos

Publicado por Yamil Bracho (1136 intervenciones) el 02/04/2007 17:19:19
En cada evento Click tiene un parametro llamado sender, es decir, el objeto que ha diusparado la accion. El prologo del Click es algo como :

private void Button1_Click(object sender, System.EventArgs e)

sender es el objeto (o control) que disparo el evento asi que puedes castearlo asi:

private void Button1_Click(object sender, System.EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color_que_quieres;

}

Si quieres hacer el codigo en una sola linea puedes hacer

((Button) sender).BackColor = Color_que_quieres;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre eventos

Publicado por Pableras (18 intervenciones) el 02/04/2007 17:32:42
Ya, lo que pasa es que como tengo 36 botones lo que no puedo hacer es:

private void Button1_Click(object sender, System.EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color_que_quieres;
}

private void Button2_Click(object sender, System.EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color_que_quieres;
}

private void Button3_Click(object sender, System.EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color_que_quieres;
}

........ etc

...así hasta llegar al botón 36 sabes ?? Demasiadas líneas de código.

Me han comentado en otro foro la posibilidad de hacerlo con matrices de controles. El problema es que no sé cómo hacerlo, porque en Visual Basic "normal", cuando tú copiabas un control y pegabas te preguntaba si querías crear una matriz de controles, pero en el Visual Studio 2003, si copio y pego simplemente me crea otro botón, con otro nombre y no me pregunta nada.

Esto de la matriz de controles me pareció una buena idea. En el evento click de la matriz se le pasaba el índice indicando el botón que había causado el evento y ya está.

Alguna idea de cómo puedo hacer lo del array de controles desde código o como sea??...o se te ocurre alguna otra forma ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 56
Bronce
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

RE:Sobre eventos

Publicado por Yamil Bracho (1136 intervenciones) el 02/04/2007 19:49:51
Me parece que no me explique bien . Creas un SOLO evento con el click y todos los botones les asignas ese evento...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre eventos

Publicado por Pableras (1 intervención) el 02/04/2007 19:54:43
Ah ok...ya entendí...voy a probar...gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre eventos

Publicado por Mononoke (14 intervenciones) el 02/04/2007 20:03:29
Vaya que tienes un problema grande jeje lo que yo te recomendaria es que deseches todo eso que tienes y busques en la red un popup calendar que esta hecho en javascript seguro te funcionara 1000 veces mejor que lo que tienes ahora...

Mononoke.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar