Top.Mail.Ru
Ответы

C# WinForms и движение окна

Добрый день, не подскажете как в Winforms сделать так, что бы окно было без рамки (это я уже сделал) но его можно было взять курсором и двигать по экрану?

По дате
По рейтингу
Аватар пользователя

Привет public partial class MainForm : Form
{
private bool dragging = false;
private Point dragCursorPoint;
private Point dragFormPoint;

public MainForm()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;

// Подписываемся на события мыши
this.MouseDown += new MouseEventHandler(MainForm_MouseDown);
this.MouseMove += new MouseEventHandler(MainForm_MouseMove);
this.MouseUp += new MouseEventHandler(MainForm_MouseUp);
}

private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
dragging = true;
dragCursorPoint = Cursor.Position;
dragFormPoint = this.Location;
}

private void MainForm_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
Point dif = Point.Subtract(Cursor.Position, new Size(dragCursorPoint));
this.Location = Point.Add(dragFormPoint, new Size(dif));
}
}

private void MainForm_MouseUp(object sender, MouseEventArgs e)
{
dragging = false;
}
}

Аватар пользователя
Ученик

Только можешь MainForm переименовать на Form

Аватар пользователя
Ученик

Не сложно, просто лень🤣🤣🤣

Аватар пользователя
Ученик

Лад, всё равно спасибо

Аватар пользователя
Мастер

Можно поместить на форму какой-либо визуальный элемент и
передвигать форму за этот элемент.
Например, перемещение с помощью панели (поместить на форму panel1).
Дважды кликаем по форме и создаём событие:

private void Form1_Load(object sender, EventArgs e)
{
panel1.MouseDown += delegate
{

panel1.Capture = false;
var msg = Message.Create(this.Handle, 0xa1, new IntPtr(2), IntPtr.Zero );
this.WndProc(ref msg);
};
}

Аватар пользователя
Мастер

Можно двигать просто за пустую клиентскую область формы:

private void Form1_Load(object sender, EventArgs e)
{
this.MouseDown += delegate
{

this.Capture = false;
var msg = Message.Create(this.Handle, 0xa1, new IntPtr(2), IntPtr.Zero );
this.WndProc(ref msg);
};
}



Видео по теме