ElTicus.com

Programación, lenguajes y recursos para programadores

**
Recurso no clasificado
Como hacer que un formulario sin bordes sea arrastrable con el ratón.
En Visual Basic 2005 (.NET)
Publicado por ulices_anibal Fecha: 2008-05-09 20:05:08 Idioma: Español Tipo de documento: Código fuente

Como hacer que un formulario sin bordes sea arrastrable con el ratón


Truco para Visual Basic .NET (2003, 2005 o 2008)

El siguiente código fuente muestra como capturar el moviemiento del ratón y hacer que el formulario completo lo siga.

Cuando dejamos un formulario sin bordes podemos estilizarlo mucho más que cuando le dejamos la clásica apariencia de formulario de Windows, sin embargo, en ese caso perdemos la facultad de poderlo reubicar en la pantalla por medio del ratón.

En este código se muestra como poner un PictureBox y hacerlo "Dragable", osea, que de ahí podamos agarrar el formulario para arrastrarlo.

Procedimento

  1. Crea una nueva aplicación para Windows
  2. Al formulario ponle la propiedad FormBorderStyle en None.
  3. Inserta un PictureBox (Dejale el nombre por defecto: PictureBox1) y colócalo en la posición donde quieras que se pueda tomar el formulario para arrastrarlo.
  4. Inserta el siguiente código en el formulario.
  5. NOTA: Para el ejemplo, pinta el PictureBox de Azul o Rojo para que sea más notorio el efecto.

Public Class Form1
    Dim bndMov As Byte = 0
    Dim PuntoRef As Point

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        bndMov = 1
        PuntoRef = e.Location
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        If bndMov = 1 Then

            If e.Y > PuntoRef.Y Then
                Me.Top = Me.Top + (e.Y - PuntoRef.Y) / 2
            ElseIf e.Y < PuntoRef.Y Then
                Me.Top = Me.Top - (PuntoRef.Y - e.Y) / 2
            End If

            If e.X > PuntoRef.X Then
                Me.Left = Me.Left + (e.X - PuntoRef.X) / 2
            ElseIf e.X < PuntoRef.X Then
                Me.Left = Me.Left - (PuntoRef.X - e.X) / 2
            End If

        End If
    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
        bndMov = 0
    End Sub
End Class




Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
Recurso no clasificado Función para Encriptar y Desencriptar una cadena de texto Recurso no clasificado Función para averiguar el espacio libre de una unidad de disco en Megabytes