Visual Basic.NET - Como programar "arrastrar" de un WindowsForm sin FormBorderStyle

   
Vista:

Como programar "arrastrar" de un WindowsForm sin FormBorderStyle

Publicado por dennis (2 intervenciones) el 22/09/2016 22:40:03
Buenas comunidad, gracias por leer mi Tema.

Estoy llevando a cabo mi proyecto final en Visual Studio 2013 con el lenguaje Visual Basic,
mi proyecto deseo que no tenga los marcos de windows, por eso use la propiedad de windows form
- FormBorderStyle en "none"

Por ello acudo a ustedes para que me ayuden con alguna forma de poder programar el arrastre de la ventana desde otra parte.

Gracias.

MenuVendedor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como programar "arrastrar" de un WindowsForm sin FormBorderStyle

Publicado por Miguel (428 intervenciones) el 23/09/2016 03:15:45
Hola,
Usa el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.       [DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
        private static extern void ReleaseCapture();
 
        [DllImport("user32.DLL", EntryPoint = "SendMessage")]
        private static extern void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
 
        private const int WM_NCLBUTTONDOWN = 161;
 
        private const int HTCAPTION = 2;
 
        private void moverForm(MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                ReleaseCapture();
                SendMessage(this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
            }
        }


Para emplearlo sólo lo llamas desde el evento MouseDown (del Form u otro control) y listo.



Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como programar "arrastrar" de un WindowsForm sin FormBorderStyle

Publicado por dennis (2 intervenciones) el 21/12/2016 15:23:23
Buenas, gracias por el código. A pesar de que es para C# acabo de usarlo.
El código para Visual Basic que use es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Inherits System.Windows.Forms.Form
 
    Private Const WM_SYSCOMMAND As Integer = &H112&
    Private Const MOUSE_MOVE As Integer = &HF012&
 
    <System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint:="ReleaseCapture")> _
    Private Shared Sub ReleaseCapture()
    End Sub
 
    <System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint:="SendMessage")> _
    Private Shared Sub SendMessage( _
            ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _
            ByVal wParam As Integer, ByVal lParam As Integer _
            )
    End Sub
 
    Private Sub moverForm()
        ReleaseCapture()
        SendMessage(Me.Handle, WM_SYSCOMMAND, MOUSE_MOVE, 0)
    End Sub
 
    Private Sub MenuPrincipal_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
                    Handles MyBase.MouseMove
        If e.Button = MouseButtons.Left Then
            moverForm()
        End If
    End Sub

Espero a alguien le ayude.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Como programar "arrastrar" de un WindowsForm sin FormBorderStyle

Mas sencillo sin invocar la API Windows, puedes hacerlo como te indican aquí:


Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar