Como mover Form sin Bordes

Muchas veces queremos tener un Form diseñado por nosotros mismos cuando practicamos la programación en c#, restandole los clásicos controles de Windows o no depender del estilo de nuestro Windows o su versión, para eso podemos quitarle los Bordes a nuestro Form, pero ya te habrás dado cuenta si lo intentaste, que una vez hecho esto nuestro Form no tendrá la opción de moverse, ni contara con los botones de cerrar, maximizar o minimazar, para eso veremos como hacer una aplicación que no contenga estilos de Windows, lo que necesitamos es lo siguiente:
- Quitarle los Bordes a un Form.
- Agregar ya sea una Imagen de Fondo, o dibujar alguna utilizando algunos Panel.
- Agregar un botón para cerrar el Form.
Como ejemplo puedes tomar el Form que se muestra en este post.

Una vez diseñado nuestro Form, debemos incluir en nuestro código lo siguiente:


Importar las Dll de user32 de Windows que contiene los métodos para mover ventanas, las cuales podemos agregar con el siguiente código:

[DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
        private extern static void ReleaseCapture();
[DllImport("user32.DLL", EntryPoint = "SendMessage")]
        private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);


Lo siguiente sera agregar el Evento Mouse Down a nuestro form, que sera el que se activara cuando queramos arrastrar nuestro form:

private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            ReleaseCapture();
            SendMessage(this.Handle, 0x112, 0xf012, 0);
        }


Por ultimo solo nos faltara agregar el código para cerrar la aplicación en nuestro botón cerrar:


private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }


Espero les haya sido de utilidad, saludos.

Comentarios

  1. EH PEGADO EXACTAMENTE ESO CODIGO Y EH PUESTO LAS LIBRERIAS NECESARIAS Y AUN NO ME PUEDE MOVER LA VENTANA, TIENES ALGUNA RECOMENDACION?

    ResponderEliminar
    Respuestas
    1. mi recomendación es que en el manejador de eventos de la forma osea el Icono de un Rayo, especifiques que ya estas agregando el evento Mouse Down a esa forma, hay tendrás todos los eventos disponibles para tu forma debes agregar el MouseDown porque por default no te lo reconocerá.

      Eliminar
    2. a mi me funciono esta perefctamente:

      http://www.elguille.info/colabora/puntoNET/couoh_FormDragDrop.htm

      Eliminar
    3. Lo que comentas sobre indicarlo en la pestaña de Eventos ha funcionado para mi.

      Eliminar
  2. Funciona correctamente, solo hay que importar una librería
    using System.Runtime.InteropServices; y creo que solucionará el inconveniente de Anónimo

    ResponderEliminar
    Respuestas
    1. Toda la razon. Yo estoy practicando programacion c# y con eso se soluciono totalmente. Saludos desde el futuro 2020

      Eliminar
  3. Se puede quitar los bordes de una aplicación de terceros con borde, justamente para no poder moverla ni cerrarla con la librería user32.dll.

    ResponderEliminar
  4. Pero en que parte del codigo se agrega?

    ResponderEliminar
    Respuestas
    1. para que funcione debes importar
      using System.Runtime.InteropServices;
      el primer codigo se coloca en

      public partial class xxx : Form
      { aqui }

      Eliminar
  5. muy bien gracias! desde Rep.Dom

    ResponderEliminar
  6. Muchas gracias. Funcionó como debe. Saludos.

    ResponderEliminar
  7. Me funciona muy bien, pero hay alguna forma de introducir el codigo en una clase o algo parecido y no estar pegando el codigo en cada formulario??

    ResponderEliminar
  8. Hola buen dia,

    Yo tengo un problema me marca un error en el IntPtr, me dice qu0e esta en el comflicto con el tipo importado IntPtr de mscorlib, Version 4.0.0.0, Culture=neutral, PublicKeyToken=b77a5etcetc. Alguien sabe?

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Añadir Items a un ListBox desde un Control Textbox C#

Llenar un DropdownList con Datos ASP.NET C#

Chart en C# - Control para Graficos en Windows Form