перетаскивание формы, не имеющей рамки

Формы, которые не имеет рамку, отдаленно напоминают плитки в Windows 8. Но их нельзя перемещать. Попробуем это изменить. Сделаем так, что бы кликнув на форме левой кнопкой мыши ее можно было перемещать.
Скрыть

Показать

Копировать
  Form1.cs  
  • 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 _0013 {
  •  public partial class Form1 : Form {
  •   public Form1() {
  •    InitializeComponent();
  •    //убираем рамку
  •    this.FormBorderStyle = FormBorderStyle.None;
  •    //изменяем цвет
  •    this.BackColor = Color.FromArgb(59, 169, 222);
  •    button1.BackColor = Color.FromArgb(99, 219, 252);
  •   }
  •   //создание констант
  •   private const int WM_NCHITTEST=0x84;
  •   private const int HTCLIENT=0x1;
  •   private const int HTCAPTION=0x2;
  •   //переопределяем метод
  •   protected override void WndProc(ref Message m) {
  •    switch(m.Msg) {
  •     case WM_NCHITTEST:
  •     base.WndProc(ref m);
  •      if( (int)m.Result==HTCLIENT ) {
  •       m.Result=(IntPtr)HTCAPTION;
  •       return;
  •      }
  •     break;
  •    }
  •    base.WndProc(ref m);
  •   }
  •   private void button1_Click(object sender, EventArgs e) {
  •    Application.Exit();
  •   }
  •  }
  • }