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鷑 comentario todav韆


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韈ulos 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