Перемещение формы за любую часть

477
28 декабря 2016, 02:05

Как сделать так, чтобы перемещение формы осуществлялось не только за верхнюю границу, а за любую часть данной формы?

Answer 1

Можно через обработчик событий, при зажатии мышки на форме и перемещении мыши изменять свойство положения формы, т. е. прибавлять к координатам формы координаты смещения мыши, это если вам не подойдет вариант с WinAPI

Answer 2

Спасибо всем. Пройдя по ссылке Руслана Артамонова выбрал этот варинат. Все красиво отрабатывает:

 public const int WM_NCLBUTTONDOWN = 0xA1;
 public const int HTCAPTION = 0x2;
 [DllImport("User32.dll")]
 public static extern bool ReleaseCapture();
 [DllImport("User32.dll")]
 public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
void Form_Load(object sender, EventArgs e)
{
   this.MouseDown += new MouseEventHandler(Form_MouseDown);  
}
void Form_MouseDown(object sender, MouseEventArgs e)
{                        
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    }
}

Опуская некоторые детали форма стала выглядеть вот так. С любого места формы, кроме контролов, можно перетащить на экране.

Answer 3

Самый простой способ сделать это без использования WinApi, примерно такой (перетаскиваем за Label):

    int? x, y;
    private void label1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            if (x == null || y == null)
            {
                x = e.X;
                y = e.Y;
            }
            else
            {
                Left += e.X - (int)x;
                Top += e.Y - (int)y;
            }
        }
        else
        {
            x = null;
            y = null;
        }
    }
READ ALSO
Как открыть форму если форма находиться в другой папке

Как открыть форму если форма находиться в другой папке

Форма и код который я пишу находиться в разных папках Код(в папке нет той формы который указываю):

412
C#.Анимация с формой

C#.Анимация с формой

Можно ли при нажатии на "Esc" переместить плавно форму в верхний левый угол рабочего экрана? Это как перетащить мышьюСпасибо

342
Как загрузить изображение в бд php

Как загрузить изображение в бд php

Не могу загрузить изображение в БДВыдает ошибку "Необходимо загрузить изображение", то есть он уже выдает ошибку в первом условии следующего...

346
Работа цикла for при поиске простого числа [требует правки]

Работа цикла for при поиске простого числа [требует правки]

Есть такая логика поиска простого числа

399