Vb.net PictureBox在用鼠标移动后会在Form1上留下一个幽灵吗?

Vb.net PictureBox在用鼠标移动后会在Form1上留下一个幽灵吗?,vb.net,picturebox,ghost-blog,Vb.net,Picturebox,Ghost Blog,我通过左键点击图片框并将其拖动到另一个位置来移动表单1上的图片框。(即使用mousemove、mousedown、mouseup和e.X和e.Y)。我还使用拖放功能将线条从一个picturebox连接到另一个picturebox。但是,当拖动线型的末端时,当它位于图片框上方时,我不会显示线型的末端,这表示可以将其放在给定的picturebox上 问题是,在将picturebox移动到所需位置后,有时拖动的线型的末端会消失在不再存在的“幽灵”或picturebox的残余上。显然,每当我移动图片盒时

我通过左键点击图片框并将其拖动到另一个位置来移动表单1上的图片框。(即使用mousemove、mousedown、mouseup和e.X和e.Y)。我还使用拖放功能将线条从一个picturebox连接到另一个picturebox。但是,当拖动线型的末端时,当它位于图片框上方时,我不会显示线型的末端,这表示可以将其放在给定的picturebox上


问题是,在将picturebox移动到所需位置后,有时拖动的线型的末端会消失在不再存在的“幽灵”或picturebox的残余上。显然,每当我移动图片盒时,控制位置都需要更新。所以,在我移动了pictureboxes之后,是否需要对Form1的控件进行某种刷新,以便更新pictureboxes的位置

是的,您需要创建继承panel/picturebox类的自定义类,在构造函数级别,您需要说me.doublebuffered=true以防止拖动picturebox/panel的阴影


此外,在“鼠标移动中的代码”事件中,您需要从光标坐标中减去面板的当前坐标,以使图像靠近光标

什么是连接线型?你能发布一些可以重现这种行为的代码吗?无论如何,请尝试在拖放后调用
Me.Invalidate(true)
(如果闪烁过多,请指定一个区域)。或者刷新表单(更加闪烁)。我不确定你的问题/背景是什么,所以…解决了这个问题。lineshape end在设计时跳过位于Form1上的默认PictureBox,这些PictureBox在运行时设置为不可见。因此,我基本上过滤了新添加的PictureBoxs的名称,解决了这个问题。线型是可以在窗体上绘制的线,无需自定义图形命令;它们是Microsoft VBPowerPacks ShapeControl的一部分。我已经做了减法,因为,是的,控件的X,Y将无法跟上鼠标的e.X和e.Y。我不确定。DoubleBuffered=True,因为我从未使用过它——所以我会尝试一下。我通常对数据表和数据网格使用双缓冲。