Arrastrar y soltar formularios sin borde ni barra de titulo

Fecha: 10/Nov/2004 (09/11/2004)
Autor: Juan Couoh; couohazcorra@yahoo.com.mx

 


WindowsForms Drag&Drop.

Cuando se le quita la barra de titulo y el borde a un formulario, para ponerle un skin o crear un splash, luego no hay forma de moverlo porque no lo puedes arrastrar.
La solución mas sencilla que encuentro es agregar estas líneas al código del formulario para que lo puedas reposicionar usando el arrastre del mouse.
Este código es un complemento de la colaboracion "Crear Skins para formularios en VB .NET" publicado el 25/Oct/2004.

A continuación el código para Visual Basic .NET:

    'Definir variables globales; estas van despues de la linea de inherits

    Dim ex, ey As Integer

    Dim Arrastre As Boolean

    'Estas tres subrutinas permiten desplazar el formulario. 

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
   
        ex = e.X

        ey = e.Y
   
        Arrastre = True
   
    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp

        Arrastre = False

    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove

	'Si el formulario no tiene borde (FormBorderStyle = none) la siguiente linea funciona bien

        If Arrastre Then Me.Location = Me.PointToScreen(New Point(Me.MousePosition.X - Me.Location.X - ex, Me.MousePosition.Y - Me.Location.Y - ey))

	'pero si quieres dejar los bordes y la barra de titulo entonces es necesario descomentar la siguiente linea y comentar la anterior, osea ponerle el apostrofe
	
	'If Arrastre Then Me.Location = Me.PointToScreen(New Point(Me.MousePosition.X - Me.Location.X - ex - 8, Me.MousePosition.Y - Me.Location.Y - ey - 60))
	
    End Sub

Con esto es suficiente para poder mover el formulario haciendo click en el area de la ventana, arrastrar y soltar. Sin embargo, un inconveniente al desactivar la ventana de titulo es que ya no aparece el menú de control con las opciones de minimizar, maximizar y cerrar; así que la solución a esto es crear un menú contextual que se despliegue al dar clic derecho: pero esa es otra historia.

 


ir al índice