问题说明了一切。
如何在多个面板之间移动控件,例如PictureBox,或者在面板和流布局面板之间移动。
我知道我可以在多个面板之间拖放控件等,但这并不会使控件在容器之间可视化移动。鼠标只会更改为不同的光标,拖动到另一个控件并释放鼠标按钮后,控件将显示在另一个容器上。我要求控件在视觉上可以移动。
有人可以提供一个简单的例子,所以我可以提出想法来应用我的情况。
注意:运行时当然。
答案 0 :(得分:3)
假设您需要运行时:
Control.SaveToBitmap
方法答案 1 :(得分:0)
让我们举一个拖动按钮的简单示例。
假设您有两种类型的容器控件: 1)X-Y布局 2)流程布局(从左到右)
单击以拖动按钮时,将点击的x偏移和y偏移记录到控件的左上角。同样,在Controls集合中记录控件的索引。
当鼠标移动时,首先检查鼠标是否更改了容器控件。 如果是,则从当前父项中删除该按钮并将其添加到新父项。
如果将按钮添加到流控制中,则需要计算新索引。为此,请计算从鼠标到所有其他控件的边界框的最近边缘的距离。然后,如果鼠标留在该控件的中心,则插入该控件的索引减去1,否则插入该控件的右侧(索引+ 1)。
如果按钮被添加到X-Y布局,则索引无关紧要。您可以简单地设置按钮相对于鼠标的位置加上x偏移和y偏移。
在拖动鼠标时,您需要强制控件刷新。我认为在容器控件上调用Invalidate()就足够了。
这应该为您提供可以用来开始编码的基本想法。