Перетащите форму окон без полей мышью
Возможный дубликат:
C# - Сделать форму без полей подвижной?
Я сделал форму без рамки в C#, установив
this.FormBorderStyle = FormBorderStyle.None;
Теперь проблема в том, как я могу перетащить его мышью?
2 ответа
Решение
Это должно быть то, что вы ищете "Улучшено: перетаскивание WinForms"
public partial class MyDraggableForm : Form
{
private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;
///
/// Handling the window messages
///
protected override void WndProc(ref Message message)
{
base.WndProc(ref message);
if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
message.Result = (IntPtr)HTCAPTION;
}
public MyDraggableForm()
{
InitializeComponent();
}
}
Как говорится в сообщении в блоге, это способ "обмануть" систему. Таким образом, вам не нужно думать о событиях мыши вверх / вниз.
Вы должны зарегистрироваться для событий MouseDown, MouseUp и MouseMove и перемещать форму в соответствии с движением мыши.