Arrastrar y soltar formularios sin borde ni barra de titulo Fecha: 10/Nov/2004 (09/11/2004)
|
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 SubCon 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.