我已使用此代码移动pictureBox_MouseMove
事件
pictureBox.Location = new System.Drawing.Point(e.Location);
但是当我尝试执行图片框闪烁时,无法识别确切的位置。你们可以帮助我吗?我希望图片框稳定......
答案 0 :(得分:5)
您想要按鼠标移动的数量移动控件:
Point mousePos;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
mousePos = e.Location;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) {
if (e.Button == MouseButtons.Left) {
int dx = e.X - mousePos.X;
int dy = e.Y - mousePos.Y;
pictureBox1.Location = new Point(pictureBox1.Left + dx, pictureBox1.Top + dy);
}
}
请注意,此代码不更新MouseMove中的mousePos变量。移动控件后需要更改鼠标光标的相对位置。
答案 1 :(得分:4)
你必须做几件事
在MouseDown
中注册移动操作的开始并记住鼠标的起始位置。
在MouseMove
中查看您是否正在移动图片。通过保持与图片框左上角相同的偏移来移动,即在移动时,鼠标指针应始终指向图片框内的同一点。这使得图片框与鼠标指针一起移动。
在MouseUp
。
private bool _moving;
private Point _startLocation;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
_moving = true;
_startLocation = e.Location;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
_moving = false;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (_moving) {
pictureBox1.Left += e.Location.X - _startLocation.X;
pictureBox1.Top += e.Location.Y - _startLocation.Y;
}
}
答案 2 :(得分:0)
尝试将SizeMode
属性从AutoSize
更改为Normal