elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [SOLUCIONADO] Evento "IsClicked" o algo parecido para los botones?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] Evento "IsClicked" o algo parecido para los botones?  (Leído 3,823 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
[SOLUCIONADO] Evento "IsClicked" o algo parecido para los botones?
« en: 6 Enero 2013, 00:29 am »

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

Código
  1.    Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
  2.        If Button1.IsClicked = True Then MsgBox("Se ha clickado el botón 1")
  3.        If Button2.IsClicked = True Then MsgBox("Se ha clickado el botón 2")
  4.        If Button3.IsClicked = True Then MsgBox("Se ha clickado el botón 3")
  5.    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 Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Evento "IsClicked" o algo parecido para los botones?
« Respuesta #1 en: 6 Enero 2013, 02:35 am »

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
  1. 'El evento Click de Button1,2 y 3 llamará al método de abajo
  2. Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
  3.       Dim BtnPulsado As Button = Ctype(Sender,Button)
  4.       MsgBox("Se ha Clickado el " & BtnPulsado.Name)
  5.   End Sub
  6.  

Espero haberte ayudado con tu problema. Si te queda alguna duda no dudes en postearla.

Saludos!


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Evento "IsClicked" o algo parecido para los botones?
« Respuesta #2 en: 6 Enero 2013, 03:36 am »

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
  1.    Private Sub Buttons_Folders_Clicked(sender As Object, e As EventArgs) Handles _
  2.        Button_2000_2006.Click, _
  3.        Button_2007.Click, _
  4.        Button_2008.Click, _
  5.        Button_2009.Click, _
  6.        Button_2010.Click, _
  7.        Button_2011.Click, _
  8.        Button_2012.Click, _
  9.        Button_2013.Click, _
  10.        Button_BSO.Click, _
  11.        Button_Classic.Click
  12.  
  13.        Dim Clicked_Button As Button = CType(sender, Button)
  14.        Dim Folders As New List(Of String)
  15.  
  16.        If Clicked_Button.Name = "Button_2000_2006" Then
  17.            ResourceTag = "_2000_2006_"
  18.            Folders.Add("Dance")
  19.            Folders.Add("Electro")
  20.            Folders.Add("Flamenco")
  21.            Folders.Add("Folk")
  22.            Folders.Add("Happy Hardcore")
  23.            Folders.Add("Hard-Techno-Progressive")
  24.            Folders.Add("Hard-Trance")
  25.            Folders.Add("Hardcore")
  26.            Folders.Add("Hardstyle")
  27.            Folders.Add("Hip-hop (English)")
  28.            Folders.Add("Hip-hop (Spanish)")
  29.            Folders.Add("Jumpstyle")
  30.            Folders.Add("Makina")
  31.            Folders.Add("Newstyle")
  32.            Folders.Add("Poky")
  33.            Folders.Add("Pop (English)")
  34.            Folders.Add("Pop (Spanish)")
  35.            Folders.Add("Progressive")
  36.            Folders.Add("Psychodelic")
  37.            Folders.Add("Reggaeton")
  38.            Folders.Add("Rock (English)")
  39.            Folders.Add("Rock (Spanish)")
  40.            Folders.Add("Techno")
  41.            Folders.Add("Trance")
  42.            Folders.Add("UK Hardcore")
  43.        ElseIf Clicked_Button.Name = "Button_2007" Then
  44.            ResourceTag = "_2007_"
  45.            Folders.Add("Dance")
  46.            Folders.Add("Electro")
  47.            Folders.Add("Flamenco")
  48.            Folders.Add("Folk")
  49.            Folders.Add("Hard-Techno-Progressive")
  50.            Folders.Add("Hard-Trance")
  51.            Folders.Add("Hardcore")
  52.            Folders.Add("Hardstyle")
  53.            Folders.Add("Hip-hop (English)")
  54.            Folders.Add("Jumpstyle")
  55.            Folders.Add("Makina")
  56.            Folders.Add("Newstyle")
  57.            Folders.Add("Poky")
  58.            Folders.Add("Pop (English)")
  59.            Folders.Add("Pop (Spanish)")
  60.            Folders.Add("Rock (English)")
  61.            Folders.Add("Techno")
  62.            Folders.Add("UK Hardcore")
  63.        ElseIf Clicked_Button.Name = "Button_2008" Then
  64.            ResourceTag = "_2008_"
  65.            Folders.Add("Dance")
  66.            Folders.Add("Electro")
  67.            Folders.Add("Flamenco")
  68.            Folders.Add("Folk")
  69.            Folders.Add("Hard-Techno-Progressive")
  70.            Folders.Add("Hard-Trance")
  71.            Folders.Add("Hardcore")
  72.            Folders.Add("Hardstyle")
  73.            Folders.Add("Hip-hop (Spanish)")
  74.            Folders.Add("Jumpstyle")
  75.            Folders.Add("Makina")
  76.            Folders.Add("Newstyle")
  77.            Folders.Add("Poky")
  78.            Folders.Add("Pop (English)")
  79.            Folders.Add("Pop (Spanish)")
  80.            Folders.Add("Progressive")
  81.            Folders.Add("Psychodelic")
  82.            Folders.Add("Reggaeton")
  83.            Folders.Add("Rock (English)")
  84.            Folders.Add("Rock (Spanish)")
  85.            Folders.Add("Techno")
  86.            Folders.Add("Trance")
  87.            Folders.Add("UK Hardcore")
  88.        ElseIf Clicked_Button.Name = "Button_2009" Then
  89.            ResourceTag = "_2009_"
  90.            Folders.Add("Dance")
  91.            Folders.Add("Electro")
  92.            Folders.Add("Flamenco")
  93.            Folders.Add("Folk")
  94.            Folders.Add("Hard-Techno-Progressive")
  95.            Folders.Add("Hard-Trance")
  96.            Folders.Add("Hardcore")
  97.            Folders.Add("Hardstyle")
  98.            Folders.Add("Hip-hop (Spanish)")
  99.            Folders.Add("Jumpstyle")
  100.            Folders.Add("Makina")
  101.            Folders.Add("Newstyle")
  102.            Folders.Add("Poky")
  103.            Folders.Add("Pop (English)")
  104.            Folders.Add("Pop (Spanish)")
  105.            Folders.Add("Progressive")
  106.            Folders.Add("Psychodelic")
  107.            Folders.Add("Reggaeton")
  108.            Folders.Add("Rock (English)")
  109.            Folders.Add("Rock (Spanish)")
  110.            Folders.Add("Techno")
  111.            Folders.Add("Trance")
  112.            Folders.Add("UK Hardcore")
  113.        ElseIf Clicked_Button.Name = "Button_2010" Then
  114.            ResourceTag = "_2010_"
  115.            Folders.Add("Dance")
  116.            Folders.Add("Electro")
  117.            Folders.Add("Flamenco")
  118.            Folders.Add("Folk")
  119.            Folders.Add("Hard-Techno-Progressive")
  120.            Folders.Add("Hard-Trance")
  121.            Folders.Add("Hardcore")
  122.            Folders.Add("Hardstyle")
  123.            Folders.Add("Hip-hop (Spanish)")
  124.            Folders.Add("Jumpstyle")
  125.            Folders.Add("Makina")
  126.            Folders.Add("Newstyle")
  127.            Folders.Add("Poky")
  128.            Folders.Add("Pop (English)")
  129.            Folders.Add("Pop (Spanish)")
  130.            Folders.Add("Progressive")
  131.            Folders.Add("Psychodelic")
  132.            Folders.Add("Reggaeton")
  133.            Folders.Add("Rock (English)")
  134.            Folders.Add("Rock (Spanish)")
  135.            Folders.Add("Techno")
  136.            Folders.Add("Trance")
  137.            Folders.Add("UK Hardcore")
  138.        ElseIf Clicked_Button.Name = "Button_2011" Then
  139.            ResourceTag = "_2011_"
  140.            Folders.Add("Dance")
  141.            Folders.Add("Electro")
  142.            Folders.Add("Flamenco")
  143.            Folders.Add("Folk")
  144.            Folders.Add("Hard-Trance")
  145.            Folders.Add("Hardcore")
  146.            Folders.Add("Hardstyle")
  147.            Folders.Add("Hip-hop (English)")
  148.            Folders.Add("Hip-hop (Spanish)")
  149.            Folders.Add("Jumpstyle")
  150.            Folders.Add("Makina")
  151.            Folders.Add("Newstyle")
  152.            Folders.Add("Poky")
  153.            Folders.Add("Pop (English)")
  154.            Folders.Add("Pop (Spanish)")
  155.            Folders.Add("Progressive")
  156.            Folders.Add("Psychodelic")
  157.            Folders.Add("Reggaeton")
  158.            Folders.Add("Rock (English)")
  159.            Folders.Add("Rock (Spanish)")
  160.            Folders.Add("Techno")
  161.            Folders.Add("Trance")
  162.            Folders.Add("UK Hardcore")
  163.        ElseIf Clicked_Button.Name = "Button_2012" Then
  164.            ResourceTag = "_2012_"
  165.            Folders.Add("Dance")
  166.            Folders.Add("Electro")
  167.            Folders.Add("Flamenco")
  168.            Folders.Add("Folk")
  169.            Folders.Add("Hard-Trance")
  170.            Folders.Add("Hardcore")
  171.            Folders.Add("Hardstyle")
  172.            Folders.Add("Hip-hop (English)")
  173.            Folders.Add("Hip-hop (Spanish)")
  174.            Folders.Add("Jumpstyle")
  175.            Folders.Add("Makina")
  176.            Folders.Add("Newstyle")
  177.            Folders.Add("Poky")
  178.            Folders.Add("Pop (English)")
  179.            Folders.Add("Pop (Spanish)")
  180.            Folders.Add("Progressive")
  181.            Folders.Add("Psychodelic")
  182.            Folders.Add("Reggaeton")
  183.            Folders.Add("Rock (English)")
  184.            Folders.Add("Rock (Spanish)")
  185.            Folders.Add("Techno")
  186.            Folders.Add("Trance")
  187.            Folders.Add("UK Hardcore")
  188.        ElseIf Clicked_Button.Name = "Button_2013" Then
  189.            ResourceTag = "_2013_"
  190.            Folders.Add("Electro")
  191.            Folders.Add("Hardcore")
  192.            Folders.Add("Hardstyle")
  193.            Folders.Add("Pop (English)")
  194.            Folders.Add("Rock (English)")
  195.            Folders.Add("Techno")
  196.            Folders.Add("UK Hardcore")
  197.        ElseIf Clicked_Button.Name = "Button_BSO" Then
  198.            Folders.Add("BSO")
  199.        ElseIf Clicked_Button.Name = "Button_Classic" Then
  200.            Folders.Add("Classic")
  201.        End If
  202.  
  203.        AddSubfolders(Folders)
  204.    End Sub



« Última modificación: 6 Enero 2013, 04:17 am por EleKtro H@cker » En línea



kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Evento "IsClicked" o algo parecido para los botones?
« Respuesta #3 en: 6 Enero 2013, 04:44 am »

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
  1. Private Sub Button_Click(Byval Sender As Object, Byval e As EventArgs) Handles Button1.Click, Button2.Click '...
  2. Dim BtnPressed As Button = Ctype(Sender,Button)
  3. Select Case BtnPressed.Name
  4. Case "Button1"
  5. MsgBox("Pulsaste el Boton1")
  6. Case "Button2"
  7. MsgBox("Pulsaste el Boton2")
  8. End Select
  9. End Sub

Saludos!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines