Visual CSharp .NET - Permitir mover formulario sin bordes con el mouse

 
Vista:
Imágen de perfil de Miguel

Permitir mover formulario sin bordes con el mouse

Publicado por Miguel (5 intervenciones) el 11/01/2007 03:44:51
Hola, les comento que he desarrollado una aplicación que consta de un formulario al cual le he establecido la propiedad 'FormBorderStyle' = None... es decir que no tiene bordes. El problema se me presenta al intentar mover éste formulario con el mouse; no me permite hacerlo.

La pregunta es: ¿Como puedo permitir que mi formulario sin borde se pueda desplazar utilizando el mouse?

Muchas gracias por su atención. salu2
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por Omar Castro (8 intervenciones) el 22/01/2007 03:32:05
private void Form1_Load(object sender, EventArgs e)
{
this.MouseMove += new System.Windows.Forms.MouseEventHandler (this.Form1_MouseMove);

}

const int WM_SYSCOMMAND = 0x112;
const int MOUSE_MOVE = 0xF012;

// Declaraciones del API
[System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
//
[System.Runtime.InteropServices.DllImport("user32.DLL", EntryPoint = "SendMessage")]
private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
//
// función privada usada para mover el formulario actual

private void moverForm()
{
ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, MOUSE_MOVE, 0);
}


private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
moverForm();
}


Todo eso va adentro de la clase con la que estas trabajando, todo lo ocupas asi que no le quites nada, adentro de Form1_Load van los componentes que tienes en la forma, es decir, ahi le dices que cuando arrastres el formulario se va a mover, pero si le poner algun componete no se va a arrastrar si lo intentas arrastrar desde el componete, ya se alguna imagen o alguna etiqueta etc...
si agregas un pictureBox1 y un label1 entonces vaz a tener que agregar estas lineas en el Form1_load

this.label1.MouseMove += new System.Windows.Forms.MouseEventHandler (this.Form1_MouseMove);
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler (this.Form1_MouseMove);

entonces el Form1_Load te quedaria de esta manera

private void Form1_Load(object sender, EventArgs e)
{
this.MouseMove += new System.Windows.Forms.MouseEventHandler (this.Form1_MouseMove);
this.label1.MouseMove += new System.Windows.Forms.MouseEventHandler (this.Form1_MouseMove);
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler (this.Form1_MouseMove);

}

espero que te sirva
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
sin imagen de perfil

RE:Permitir mover formulario sin bordes con el mou

Publicado por Raul Gonzalez (1 intervención) el 03/05/2017 16:41:41
Para mover un Form sin borde en C# no hay que complicarse tanto con APIs , por dios, es muy sencillo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//CORTESÍA DE RAUL GONZALEZ DE VENEZUELA PTO. CABELLO EDO. CARABOBO
 
//PASO 1: declarar como globales
public int xClick = 0, yClick = 0;
 
//PASO 2: en el evento MouseMove del Form
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if(e.Button!=MouseButtons.Left)
        { xClick = e.X; yClick = e.Y;}
    else
        { this.Left = this.Left + (e.X - xClick); this.Top = this.Top + (e.Y - yClick); }
}
//MAS FÁCIL IMPOSIBLE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
4
Comentar
sin imagen de perfil
Val: 3
Ha aumentado 1 puesto en Visual CSharp .NET (en relación al último mes)
Gráfica de Visual CSharp .NET

RE:Permitir mover formulario sin bordes con el mou

Publicado por Ivan (1 intervención) el 27/01/2018 10:14:27
Gracias no sabia que era super fácil, llevaba 1 hora intentando esto jaja
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por cooper barrios (1 intervención) el 01/04/2019 22:21:03
gracias es el mejor codigo
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por Diego Santacruz (1 intervención) el 14/05/2019 15:06:57
Excelente, muy util!!
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por fabian arias (1 intervención) el 30/07/2019 22:45:43
Excelente código, sencillo y sin tantas vueltas,

pregunto tendras uno para redimiensionar el formulario?

Mil gracias
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por Roland (1 intervención) el 23/09/2019 08:27:31
Tengo una pregunta soy nuevo en esto, me podrías decir si tienes canal de youtube donde expliques mejor el manejo de este tipo de eventos que como tal no eh logrado entender la estructura de este código.
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por mike (1 intervención) el 25/09/2019 03:16:06
Excelente hermano Viva Venezuela
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por Eric (1 intervención) el 12/12/2019 02:23:31
Y como podria hacerse para que permita moverse solo desde la parte de arriba?
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 Leonardo
Val: 27
Ha mantenido su posición en Visual CSharp .NET (en relación al último mes)
Gráfica de Visual CSharp .NET

RE:Permitir mover formulario sin bordes con el mou

Publicado por Leonardo (10 intervenciones) el 17/12/2019 12:50:49
Tienes dos opciones para controlar que el formulario sin borde se desplace solamente si presionas el botón izquierdo del ratón en la parte superior.

Crea un formulario sin borde y añádele un control contenedor (PictureBox, por ejemplo) que ocupe toda la parte superior, con una altura razonable, algo parecido a la banda de título de un formulario con borde que se utiliza para desplazarlo.

Inserta el siguiente código adaptándolo a los nombres de tu formulario.

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
28
public partial class frmHeaded : Form
    {
        public int xClick = 0, yClick = 0;
 
        public frmHeaded()
        {
            InitializeComponent();
        }
 
        private void cmdClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void mouse_Move(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                xClick = e.X;
                yClick = e.Y;
            }
            else
            {
                this.Left = this.Left + (e.X - xClick);
                this.Top = this.Top + (e.Y - yClick);
            }
        }
    }


Crea otro formulario sin borde y sin barra de título personalizada (Sin el PictureBox que te menciono anteriormente.

Inserta el siguiente código adaptándolo a los nombres de tu formulario.

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
28
29
public partial class frmNoHeaded : Form
    {
        public int xClick = 0, yClick = 0;
        private const int topArea = 25;
 
        public frmNoHeaded() { InitializeComponent(); }
 
        private void cmdClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void mouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                xClick = e.X;
                yClick = e.Y;
            }
            else
            {
                if (yClick <= topArea)
                {
                    this.Left = this.Left + (e.X - xClick);
                    this.Top = this.Top + (e.Y - yClick);
                }
            }
        }
    }


Espero que te resulte útil.
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 Leonardo
Val: 27
Ha mantenido su posición en Visual CSharp .NET (en relación al último mes)
Gráfica de Visual CSharp .NET

RE:Permitir mover formulario sin bordes con el mou

Publicado por Leonardo (10 intervenciones) el 17/12/2019 15:06:57
Perdona. He omitido comentarte que en la primera hipótesis tienes que crear el evento mouse_Move en el PictureBox insertado; en el segundo caso el evento mouse_Move lo tienes que crear en el propio formulario.
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por IT (1 intervención) el 19/04/2024 21:56:13
Si le colocar un panel en la pate de arriba como titulo puedes manejarlo de esa parte
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

RE:Permitir mover formulario sin bordes con el mou

Publicado por Juan Valdez (1 intervención) el 08/10/2021 19:17:09
Lo dicho: "más fácil imposible"

Muchas gracias.
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

Permitir mover formulario sin bordes con el mouse

Publicado por LeoMarqz (1 intervención) el 15/01/2022 03:40:03
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ResourceManagement
{
    public partial class App_Login : Form
    {
 
        private int windowForm_M;
        private int windowForm_MX;
        private int windowForm_MY;
 
        public App_Login()
        {
            InitializeComponent();
        }
 
        private void btnAppClose_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void App_Login_Load(object sender, EventArgs e)
        {
 
        }
 
        private void panelOptions_MouseDown(object sender, MouseEventArgs e)
        {
            this.windowForm_M = 1;
            this.windowForm_MX = e.X;
            this.windowForm_MY = e.Y;
        }
 
        private void panelOptions_MouseMove(object sender, MouseEventArgs e)
        {
            if (this.windowForm_M == 1) this.SetDesktopLocation(MousePosition.X - this.windowForm_MX, MousePosition.Y - this.windowForm_MY);
        }
 
        private void panelOptions_MouseUp(object sender, MouseEventArgs e)
        {
            this.windowForm_M = 0;
        }
    }
}
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