Перетащите форму окон без полей мышью

Возможный дубликат:
C# - Сделать форму без полей подвижной?

Я сделал форму без рамки в C#, установив

this.FormBorderStyle = FormBorderStyle.None;

Теперь проблема в том, как я могу перетащить его мышью?

2 ответа

Решение

Это должно быть то, что вы ищете "Улучшено: перетаскивание WinForms"

public partial class MyDraggableForm : Form
{
    private const int WM_NCHITTEST = 0x84;
    private const int HTCLIENT = 0x1;
    private const int HTCAPTION = 0x2;

    ///
    /// Handling the window messages
    ///
    protected override void WndProc(ref Message message)
    {
        base.WndProc(ref message);

        if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
            message.Result = (IntPtr)HTCAPTION;
    }
    public MyDraggableForm()
    {
        InitializeComponent();
    }
}

Как говорится в сообщении в блоге, это способ "обмануть" систему. Таким образом, вам не нужно думать о событиях мыши вверх / вниз.

Вы должны зарегистрироваться для событий MouseDown, MouseUp и MouseMove и перемещать форму в соответствии с движением мыши.

Другие вопросы по тегам