Visual Basic.NET - Pregunta sobre eventos

 
Vista:

Pregunta sobre eventos

Publicado por Pableras (17 intervenciones) el 02/04/2007 11:02:59
Hola, qué tal ??

He hecho un calendario(control de usuario) 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

RE:Pregunta sobre eventos

Publicado por Eligio Almuedo (6 intervenciones) el 02/04/2007 12:37:04
Estas de suerte. Alguien antes que tu se le ocurrio lo que a ti y sacó un complemento que o hace por ti. Picas con el derecho en la barra de herramientas de la izquierda (donde tienes los labels, botones, textbox, etc..), y selecciona "Componentes". Marca el check en la lista de "Control Calendar de Microsoft". Te recomiendo que instales el ultimo office que encuentres. Con el office XP va de lujo.

Te habras agregado un elemento nuevo en tu lista que hace justo lo que tu querias hacer pero bien hecho (sin menospreciar tu trabajo).

En Calendar.value tienes la fecha. Bichea un poco las propiedades y veras que chulo queda. Saludos.
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:Pregunta sobre eventos

Publicado por Pableras (17 intervenciones) el 02/04/2007 13:28:28
No me refiero a eso. Ya sabía que existía un calendar, pero en mi ejemplo (exista ya un calendar o no, lo hago por practicar) lo que quiero es saber cómo teniendo muchos botones, no tenga que poner los eventos onclick de cada uno(para dejar, por ejemplo marcado un día)...que fuera algo así por ejemplo:

public function MarcarDia(Button btn)
{
......
}
Buttons_Onclick MarcarDia(btn);

Como veis este código, sintaxis, etc me lo acabo de inventar jaja pero lo que quiero es asociar a todos los button_onclick una función a la que se le pase el botón que ha disparado el onclick.

En este caso imaginario mío que he puesto arriba, tiene muy poco código y es más lógico que poner los 36 eventos onclick para cada uno de los 36 botones:

private function Button1_onclick(sdfsf)
{
MarcarDia();
}

private function Button2_onclick(sdfsf)
{
MarcarDia();
}
private function Button3_onclick(sdfsf)
{
MarcarDia();
}

...... etc

Imagínate poner esto hasta los 36 botones que tengo...uffff !!! qué tostón !!!!

Se os ocurre algo un poco más elegante que esto último ??

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:Pregunta sobre eventos

Publicado por Eligio Almuedo (6 intervenciones) el 02/04/2007 16:45:49
Siempre existe una salida elegante. Si no es la solucion como dices un Calendar y te lo quieres currar como reto personal, tienes que crear una matriz de objetos.

Para ello solo necesitas un solo boton (command1).
Luego lo señalas en la ventana de diseño y haz click con el derecho y lo copias
Luego al pegar te preguntara que existe un boton Command1 y que si quieres crear una matriz
Le dices que si y repites esto tantas veces como te haga falta (36 en tu caso)

Ahora veras que el evento click del boton solo es uno solo y no 36.

Private Sub Command1_Click(Index As Integer)

End Sub

Donde index devuelve el numero de boton pulsado de la matriz de 36 que creaste

Luego solo necesitaras codigo del tipo: IF INDEX = 3 THEN .......

Seguro que asi ahorras codigo y sales elegante de este lanze. Saludos
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:Pregunta sobre eventos

Publicado por Pableras (17 intervenciones) el 02/04/2007 17:18:02
Hola de nuevo...

Me parece una buena idea, lo que pasa es que cuando yo pincho en un botón, copio, y luego pego, no me sale lo de "desea crear una matriz de controles?". Eso recuerdo que sí me salía en el Visual Basic "normal", pero en el Visual Studio .NET 2003 no me sale eso.

Alguna sugerencia? me creo un array de botones en código ??? nunca lo he hecho y no sé si me va a valer
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