Ответ:
Тут есть два обычных подхода:
перекрыть WndProc так, чтобы клик по форме воспринимался как клик по заголовку,
отслеживать клик по форме и движения мыши и менять координаты формы самостоятельно.
Пример второго подхода.
Объяснение:
private bool isDragging = false;
private Point lastCursor;
private Point lastForm;
private void Form_MouseDown(object sender, MouseEventArgs e) {
isDragging = true;
lastCursor = Cursor.Position;
lastForm = this.Location;
}
private void Form_MouseMove(object sender, MouseEventArgs e) {
if (isDragging) {
this.Location =
Point.Add(lastForm, new Size(Point.Subtract(Cursor.Position, new Size(lastCursor))));
private void Form_MouseUp(object sender, MouseEventArgs e) {
isDragging = false;
Copyright © 2024 SCHOLAR.TIPS - All rights reserved.
Answers & Comments
Ответ:
Тут есть два обычных подхода:
перекрыть WndProc так, чтобы клик по форме воспринимался как клик по заголовку,
отслеживать клик по форме и движения мыши и менять координаты формы самостоятельно.
Пример второго подхода.
Объяснение:
private bool isDragging = false;
private Point lastCursor;
private Point lastForm;
private void Form_MouseDown(object sender, MouseEventArgs e) {
isDragging = true;
lastCursor = Cursor.Position;
lastForm = this.Location;
}
private void Form_MouseMove(object sender, MouseEventArgs e) {
if (isDragging) {
this.Location =
Point.Add(lastForm, new Size(Point.Subtract(Cursor.Position, new Size(lastCursor))));
}
}
private void Form_MouseUp(object sender, MouseEventArgs e) {
isDragging = false;
}