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
  2. Funciona correctamente, solo hay que importar una librería
    using System.Runtime.InteropServices; y creo que solucionará el inconveniente de Anónimo

    ResponderEliminar
  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

Publicar un comentario

Entradas populares de este blog

Chart en C# - Control para Graficos en Windows Form

Llenar un DropdownList con Datos ASP.NET C#

Crear un Sistema con conexión a BD paso a paso C#