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.