none
Mover botones en tiempo de ejecucion

    Pregunta

  • Buenas tardes a todos. Revisando el foro encontre un codigo para mover controles, el siguiente

    Public _x, _y As Integer
        Public Movimiento As Boolean
        Public CantBotones As Integer
        Public boton As Button
    
        Private Sub Control_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            _x = e.X
            _y = e.Y
            If e.Button = MouseButtons.Right Then
                Movimiento = True
            End If
            If e.Button = MouseButtons.Left Then
                'boton = botonTocado
                Form2.ShowDialog()
            End If
        End Sub
    
        Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            If Movimiento Then
                CType(sender, Control).Left = e.X +
                  CType(sender, Control).Left - _x
                CType(sender, Control).Top = e.Y +
                  CType(sender, Control).Top - _y
            End If
        End Sub
    
        Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            Movimiento = False
        End Sub
    
        Public Sub AsignarEventos(ByVal _Controles As Control)
    
            Dim Controles As Control
    
            For Each Controles In _Controles.Controls
    
                AddHandler Controles.MouseDown, AddressOf Control_MouseDown
                AddHandler Controles.MouseMove, AddressOf Control_MouseMove
                AddHandler Controles.MouseUp, AddressOf Control_MouseUp
    
                AsignarEventos(Controles)
            Next
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            AsignarEventos(Me)
    end sub

    En la parte comentada quisiera guardar el boton que fue tocado, alguna solucion? idea?

    desde ya muchas gracias un saludo

    viernes, 26 de agosto de 2016 20:49

Respuestas

Todas las respuestas

  • Hola JoniJeJ,

    Guardar a dónde? Qué guardará ? El nombre, el control, el texto? ....

    Sólo tendrías que obtener el control que produjo en evento mediante el sender.

    Un ejemplo sencillo : Guardo el nombre del botón en una lista.

      'Guardará los nombres de los botones
        Dim botones As List(Of String)
    
        Private Sub Control_MouseDown(ByVal sender As System.Obj.....
            _x = e.X
            _y = e.Y
            If e.Button = MouseButtons.Right Then
                Movimiento = True
            End If
            If e.Button = MouseButtons.Left Then
                Dim btn As Button = TryCast(sender, Button)
                'Agrego el nombre del control a la lista
                botones.Add(btn.Name)
                Form2.ShowDialog()
            End If
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Propuesto como respuesta Willams Morales sábado, 27 de agosto de 2016 0:19
    viernes, 26 de agosto de 2016 21:04
  • Justo lo que necesitaba, muchas gracias
    viernes, 26 de agosto de 2016 23:42
  • JoniJeJ,

    Te recomiendo que cuando una respuesta resuelva tu problema la marques como correcta para cerrar el hilo.

    sábado, 27 de agosto de 2016 0:19