[SOLUCIONADO] Evento "IsClicked" o algo parecido para los botones?

Iniciado por Eleкtro, 6 Enero 2013, 00:29 AM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Me gustaría manejar el mismo evento para una serie de botones, algo así:

Código (vbnet) [Seleccionar]
   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.








kub0x

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).

Código (VB.NET) [Seleccionar]

'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!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


Eleкtro

#2
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) ;D

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?.



Código (vbnet) [Seleccionar]
    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)
        Dim Folders As New List(Of String)

        If Clicked_Button.Name = "Button_2000_2006" Then
            ResourceTag = "_2000_2006_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Happy Hardcore")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2007" Then
            ResourceTag = "_2007_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Rock (English)")
            Folders.Add("Techno")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2008" Then
            ResourceTag = "_2008_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2009" Then
            ResourceTag = "_2009_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2010" Then
            ResourceTag = "_2010_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2011" Then
            ResourceTag = "_2011_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2012" Then
            ResourceTag = "_2012_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2013" Then
            ResourceTag = "_2013_"
            Folders.Add("Electro")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Pop (English)")
            Folders.Add("Rock (English)")
            Folders.Add("Techno")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_BSO" Then
            Folders.Add("BSO")
        ElseIf Clicked_Button.Name = "Button_Classic" Then
            Folders.Add("Classic")
        End If

        AddSubfolders(Folders)
    End Sub












kub0x

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).

Código (VB.NET) [Seleccionar]

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!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate