移动由PictureBox组成的表单

时间:2014-04-21 19:01:32

标签: c# winforms picturebox

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

是否有任何代码可以帮助我解决这个问题?我尝试过WndProc,但没有为我工作。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用一点点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);
}