Arrastrar y soltar formularios sin borde ni barra de titulo

Fecha: 10/Nov/2004 (09/11/2004)
Autor: Juan Couoh; [email protected]

 


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