PictureBox制作的移动表单

本文关键字:移动 表单 PictureBox | 更新日期: 2023-09-27 17:59:10

我有一个从一个边缘到另一个边缘的PictureBox表单。我已将FormBorderStyle设置为"无"。但当我运行我的应用程序时,我无法将其移动到任何地方。

有什么代码可以帮助我解决这个问题吗?我尝试过WndProc,但对我不起作用。

PictureBox制作的移动表单

捕获窗体的MouseMove、MouseDown和MouseUp事件。在MouseDown事件中,存储鼠标的相对位置并设置标志,使用先前存储的位置移动窗体并重置标志。

使用一点pinvoke:更容易做到这一点

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg,
                                     int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
public Form1() {
  InitializeComponent();
  pictureBox1.MouseDown += pictureBox1_MouseDown;
}
void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
  ReleaseCapture();
  SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}