Как я могу переместить окна, когда мышь вниз - PullRequest
4 голосов
/ 09 августа 2010

мы можем перемещать формы окон, когда мы нажимаем на строку заголовка. но как я могу перемещать окна при наведении мыши на форму?

Ответы [ 3 ]

11 голосов
/ 09 августа 2010

Вам нужно будет записывать, когда мышь нажата и вверх, используя события MouseDown и MouseUp:

private bool mouseIsDown = false;
private Point firstPoint;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    firstPoint = e.Location;
    mouseIsDown = true;
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
    mouseIsDown = false;
}

Как видите, записывается первая точка, поэтому вы можете использовать событие MouseMove следующим образом:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (mouseIsDown)
    {
        // Get the difference between the two points
        int xDiff = firstPoint.X - e.Location.X;
        int yDiff = firstPoint.Y - e.Location.Y;

        // Set the new point
        int x = this.Location.X - xDiff;
        int y = this.Location.Y - yDiff;
        this.Location = new Point(x, y);
    }
}
4 голосов
/ 09 августа 2010

Вы можете сделать это вручную, обработав событие MouseDown, как объяснено в других ответах. Другой вариант - использовать этот небольшой служебный класс , который я написал некоторое время назад. Это позволяет сделать окно «подвижным» автоматически, без строки кода.

3 голосов
/ 09 августа 2010

Прослушивание события, когда кнопка мыши опускается в форме, а затем прослушивание движений мыши до тех пор, пока она снова не поднимется.

Вот статья codeproject, которая показывает, как это сделать: Переместить окно / форму без заголовка в C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...