Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

YarinMinecraft YT Ученик (227), закрыт 1 месяц назад
Добрый день, не подскажете как в Winforms сделать так, что бы окно было без рамки (это я уже сделал) но его можно было взять курсором и двигать по экрану?
Лучший ответ
Котище рыжий Профи (574) 1 месяц назад
Привет 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;
}
}
YarinMinecraft YTУченик (227) 1 месяц назад
Только можешь MainForm переименовать на Form
Котище рыжий Профи (574) YarinMinecraft YT, стесняюсь спросить а ты вобще хоть что то в программировании знаешь? Не уж то переименовать класс и методы это сложно...
YarinMinecraft YTУченик (227) 1 месяц назад
Не сложно, просто лень???
Котище рыжий Профи (574) YarinMinecraft YT, гений боже а мне не лень по твоему. Ладно вот и помогай таким как ты
YarinMinecraft YTУченик (227) 1 месяц назад
Лад, всё равно спасибо
Остальные ответы
stalker Мыслитель (9404) 1 месяц назад
Можно поместить на форму какой-либо визуальный элемент и
передвигать форму за этот элемент.
Например, перемещение с помощью панели (поместить на форму 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);
};
}
stalkerМыслитель (9404) 1 месяц назад
Можно двигать просто за пустую клиентскую область формы:

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);
};
}
Похожие вопросы