C# 是否有方法将对象(如标签)移动到其他对象(如PictureBox)上?
目前,我正在进行一个项目,使用两个标签跟踪表单上的坐标,一个跟踪X坐标,另一个跟踪Y坐标。到目前为止,它只在没有图片盒的情况下工作良好。然而,在等式中添加一个PictureBox会产生一些问题。大多数都可以忽略不计,但有一个让我困惑。将鼠标移到PictureBox上时,标签和PictureBox都停止移动。当我将光标移到PictureBox区域之外时,它才开始移动。有没有可能解决这个问题 代码:C# 是否有方法将对象(如标签)移动到其他对象(如PictureBox)上?,c#,winforms,C#,Winforms,目前,我正在进行一个项目,使用两个标签跟踪表单上的坐标,一个跟踪X坐标,另一个跟踪Y坐标。到目前为止,它只在没有图片盒的情况下工作良好。然而,在等式中添加一个PictureBox会产生一些问题。大多数都可以忽略不计,但有一个让我困惑。将鼠标移到PictureBox上时,标签和PictureBox都停止移动。当我将光标移到PictureBox区域之外时,它才开始移动。有没有可能解决这个问题 代码: @艾米,你确定这是winforms吗?我不记得有一个OnMouseMove方法。@Sweeper它可
@艾米,你确定这是winforms吗?我不记得有一个
OnMouseMove
方法。@Sweeper它可能是WPF,但我不这么认为。Winforms中有一个OnMouseMove
:您悬停在上面的控件现在获得MouseMove事件。您需要将表单的Capture属性设置为true,以确保它获取所有事件。在MouseDown上抓取捕获,在MouseMove上移动东西,然后在MouseUp上释放捕获。在网上有很多这样做的例子。您为什么要覆盖OnMouseMove而不是使用MouseMove事件?
int x = 0, y = 0;
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
x = e.X; y = e.Y;
label1.Location = new Point(x - label1.Width, y);
label2.Location = new Point(x, y - label2.Height);
pictureBox1.Location = new Point(x, y);
label1.Text = x.ToString(); label2.Text = y.ToString();
}