Как переместить приложение формы c # без рамки по умолчанию - PullRequest
0 голосов
/ 11 мая 2018

Привет! Я написал код для перемещения приложения формы Windows без стиля рамки по умолчанию, и я могу его переместить. Но когда я двигаюсь быстро, панель не следует за мышью. Как я могу это исправить?

bool mouseDown = false;
int mouseX = 0, mouseY = 0;

private void MouseMove(object sender, MouseEventArgs e)
{
    if (mouseDown && Control.MouseButtons.HasFlag(MouseButtons.Left)) {

        this.SetDesktopLocation(MousePosition.X - mouseX, MousePosition.Y - mouseY);
    }
}

private void MouseDown(object sender, MouseEventArgs e)
{
    mouseDown = true;
    mouseX = e.X;
    mouseY = e.Y; 
}

private void MouseUpp(object sender, MouseEventArgs e)
{
    mouseDown = false; 
}

1 Ответ

0 голосов
/ 11 мая 2018

Просто используйте симпатичную маленькую функцию user32 прямо здесь:

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{     
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}

Это сделает перемещение намного быстрее.

Благодаря @ Джои

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