Autor
|
Tema: [SOLUCIONADO] Evento "IsClicked" o algo parecido para los botones? (Leído 3,823 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Me gustaría manejar el mismo evento para una serie de botones, algo así: Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click If Button1.IsClicked = True Then MsgBox("Se ha clickado el botón 1") If Button2.IsClicked = True Then MsgBox("Se ha clickado el botón 2") If Button3.IsClicked = True Then MsgBox("Se ha clickado el botón 3") End Sub
¿Es posible hacer eso? Si no es posible...¿Que alternativas tengo para simplificarlo de alguna manera parecida, sin tener que hacer un sub por cada evento ".Click" de cada Botón? Gracias.
|
|
« Última modificación: 6 Enero 2013, 05:05 am por EleKtro H@cker »
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buenas EleKtro, no sé exactamente lo que buscas, pero creo entender que quieres asociar un evento de varios controles a un método, en este caso, el evento Click de varios botones a Buttons_Click(). Lo que daría como resultado una llamada al método asociado al evento. Si en este caso tuvieras que determinar que botón de los que están asociados al evento provocó la llamada al evento, podrías hacerlo a través de la variable Sender, pues es el objeto que provocó el evento. Como en ejemplo de arriba, hay N Buttons integrados en la aplicación y sus eventos "Click" están asociados a un procedimiento: (Nótese que los candidatos sólo pueden ser Button1,2 y 3 independientemente de la cantidad de botones de los que dispongas en la aplicación, pues con Handles asocias el evento Click al método Buttons_Click). 'El evento Click de Button1,2 y 3 llamará al método de abajo Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Dim BtnPulsado As Button = Ctype(Sender,Button) MsgBox("Se ha Clickado el " & BtnPulsado.Name) End Sub
Espero haberte ayudado con tu problema. Si te queda alguna duda no dudes en postearla. Saludos!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Era más fácil de lo que pensaba, y con un AddHandler añadiré el resto de botones (Otra cosa que aprendí de tí xD), si que me has servido de ayuda (como siempre) Saludos! EDITO: Pues si que me queda una duda... pero es simple curiosidad... ¿Que diferencia hay si en lugar de hacer esto como lo estoy haciendo (IF, ELSEIF) lo hiciera con un select case? ¿Que es mejor, y porqué? He estado intentando comparar y pensar en el razonamiento de cual sería mejor usar en este caso, pero a mi parecer creo que daría exactamente el mismo resultado sin optimización ninguna del código, símplemente es lo mismo pero distinto de hacer (para este caso), ¿Me equivoco?. Private Sub Buttons_Folders_Clicked(sender As Object, e As EventArgs) Handles _ Button_2000_2006.Click, _ Button_2007.Click, _ Button_2008.Click, _ Button_2009.Click, _ Button_2010.Click, _ Button_2011.Click, _ Button_2012.Click, _ Button_2013.Click, _ Button_BSO.Click, _ Button_Classic.Click Dim Clicked_Button As Button = CType(sender, Button) If Clicked_Button.Name = "Button_2000_2006" Then ResourceTag = "_2000_2006_" Folders. Add("Hard-Techno-Progressive") ElseIf Clicked_Button.Name = "Button_2007" Then ResourceTag = "_2007_" Folders. Add("Hard-Techno-Progressive") ElseIf Clicked_Button.Name = "Button_2008" Then ResourceTag = "_2008_" Folders. Add("Hard-Techno-Progressive") ElseIf Clicked_Button.Name = "Button_2009" Then ResourceTag = "_2009_" Folders. Add("Hard-Techno-Progressive") ElseIf Clicked_Button.Name = "Button_2010" Then ResourceTag = "_2010_" Folders. Add("Hard-Techno-Progressive") ElseIf Clicked_Button.Name = "Button_2011" Then ResourceTag = "_2011_" ElseIf Clicked_Button.Name = "Button_2012" Then ResourceTag = "_2012_" ElseIf Clicked_Button.Name = "Button_2013" Then ResourceTag = "_2013_" ElseIf Clicked_Button.Name = "Button_BSO" Then ElseIf Clicked_Button.Name = "Button_Classic" Then End If End Sub
|
|
« Última modificación: 6 Enero 2013, 04:17 am por EleKtro H@cker »
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buffff muy gorda la comparativa, eso se puede simplificar y te aconsejo que lo hagas ya :S Bueno, prácticamente es lo mismo, porque con If miras si cierta propiedad se cumple y con Select Case ejecutas instrucciones si se da una propiedad (especificando un Caso). Private Sub Button_Click(Byval Sender As Object, Byval e As EventArgs) Handles Button1.Click, Button2.Click '... Dim BtnPressed As Button = Ctype(Sender,Button) Select Case BtnPressed.Name Case "Button1" MsgBox("Pulsaste el Boton1") Case "Button2" MsgBox("Pulsaste el Boton2") End Select End Sub
Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
"""BUSCO EJEMPLO VB PARA ENVIAR MAILS""""
Programación Visual Basic
|
gera
|
1
|
6,594
|
1 Septiembre 2005, 00:14 am
por programatrix
|
|
|
Botones, botones y más botones: Facebook puede anunciar los "Leído", ....
Noticias
|
wolfbcn
|
0
|
2,113
|
20 Septiembre 2011, 13:24 pm
por wolfbcn
|
|
|
ayuda con VisualStudio2010,para que es "L" y "_T" y como lo arreglo[SOLUCIONADO]
Programación C/C++
|
Belial & Grimoire
|
6
|
5,191
|
1 Junio 2012, 04:45 am
por Karman
|
|
|
problema para agregar evento "KeyPressed" en una ventana swing java
Java
|
p4nd4criss
|
2
|
6,531
|
4 Junio 2012, 02:29 am
por p4nd4criss
|
|
|
Facebook presenta dos nuevos botones, "Lo Quiero" y "Coleccionar", con la ...
Noticias
|
wolfbcn
|
4
|
5,300
|
9 Octubre 2012, 18:53 pm
por m0rf
|
|