在你的Form中定义一个变量:
private Point delta;//在要移动的控件加上一个MouseDown的事件如下:private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Delta=new Point(-e.X,-e.Y);
}
//修改你的MouseMove事件代码如下:private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//如果点击左键并移动
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Point pos=pictureBox1.Counts.MousePosition;
pos.Offset(delta.X,delta.Y);
this.pictureBox1.Location = pos;
}
}
private Point delta;//在要移动的控件加上一个MouseDown的事件如下:private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Delta=new Point(-e.X,-e.Y);
}
//修改你的MouseMove事件代码如下:private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//如果点击左键并移动
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Point pos=pictureBox1.Counts.MousePosition;
pos.Offset(delta.X,delta.Y);
this.pictureBox1.Location = pos;
}
}
Point pos=pictureBox1.Counts.MousePosition;是
pictureBox1.Controls.MousePosition;的笔误吗?编译没有通过。
而且MousePosition是相对于屏幕的坐标,我试着改成了以下代码,可是移动的时候,控件总是离得很远。请高手赐教!private Point StartPoint; //鼠标点击之后的相对于窗体的开始坐标
private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
StartPoint = new Point(e.X + pictureBox1.Location.X ,e.Y + pictureBox1.Location.Y);
}private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//如果点击左键并移动
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
//鼠标移动之后的相对于窗体的坐标
Point EndPoint = new Point(e.X + pictureBox1.Location.X ,e.Y + pictureBox1.Location.Y);
EndPoint.Offset(EndPoint.X - StartPoint.X,EndPoint.Y - StartPoint.Y);
this.pictureBox1.Location = EndPoint;
}
}
再加50分,请高手贴出代码和注释,谢谢!
你的代码方法不对
pictureBox1.Controls后面加了点(.)之后,MousePosition不能出现
把pictureBox1.Controls.MousePosition;
改为Control.MousePosition;
OK?
private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
StartPoint = new Point(-e.X,-e.Y);
}private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//如果点击左键并移动
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Point NewLoction = new Point(Control.MousePosition.X - this.Location.X ,
Control.MousePosition.Y - this.Location.Y);
NewLoction.Offset(StartPoint.X,StartPoint.Y);
this.pictureBox1.Location = NewLoction;
}
}
StartPoint = New Point(-e.X - 1, -e.Y - 1)
End Sub Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If e.Button = MouseButtons.Left Then
Dim NewLocation As New Point(Control.MousePosition.X - Location.X - (Me.Width - Me.ClientRectangle.Width) / 2, _
Control.MousePosition.Y - Location.Y - (Me.Height - Me.ClientRectangle.Height) + 4)
NewLocation.Offset(StartPoint.X, StartPoint.Y)
PictureBox1.Location = NewLocation
'Me.ClientRectangle.X()
End If
End Sub