在C#中拖放时如何避免两个图像重叠?
我希望在面板中拖放图像,并希望避免图像重叠。图像是从另一个面板拖动的,我希望从该图像构建布局。我能够将图像拖放到面板上,并希望在拖放时避免重叠 专用无效面板1_DragDrop(对象发送方,DragEventArgs e) { //this.Cursor=Cursors.SizeAll在C#中拖放时如何避免两个图像重叠?,c#,.net-3.5,C#,.net 3.5,我希望在面板中拖放图像,并希望避免图像重叠。图像是从另一个面板拖动的,我希望从该图像构建布局。我能够将图像拖放到面板上,并希望在拖放时避免重叠 专用无效面板1_DragDrop(对象发送方,DragEventArgs e) { //this.Cursor=Cursors.SizeAll Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control; if (c != null) {
Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control;
if (c != null)
{
mycontrol = c;
c.Location = this.panel1.PointToClient((new Point(e.X, e.Y)));
this.panel1.Controls.Add(c);
}
}
e、 X和e.Y不得位于面板中其他控件的顶部
我该怎么做?请给我一个合适的解决方案
谢谢。您的问题有两种解释: 1) 你想让你放下的控件调整它的Zorder,这样它就“在”你面板中其他控件的后面…就像你想让放下的图像成为背景一样 如果是这样的话,那么就做: c、 SendToBack() 完成this.panel1.Controls.Add(c)之后 或 2) 实际上,您正在将多个图像放入面板中,并且希望它们的布局就像它们在一个列表中一样,一个接一个地垂直排列 如果需要这样做,则需要定位放置的图像,以便指定其顶部和左侧坐标,以便它们从面板中显示的“最底部”图像控件开始 根据在.Control集合中维护控件的方式,可以通过几种不同的方式计算坐标 如果显示在控件集合中的控件按照与其垂直Y偏移相等的顺序正确排序/维护,则只需查看.controls集合中的最后一个控件,找到其底部Y位置: e、 g 如果(this.panel1.Controls.Count==0)
{
c、 X=0;
c、 Y=0;
}
否则
{
c、 X=0;
c、 Y=this.panel1.Controls[this.panel1.Controls.Count-1]。底部;
}
如果不按像素y顺序维护图像控件,则必须迭代.controls集合中的所有控件,并找到具有最大“底部”的控件,并将其作为新删除的图像控件的起点。@C.Karunarathne-Stackoverflow用户希望人们至少做一点工作并展示出来。如果您不提供一些并解释什么不起作用,没有人会响应代码请求。@C.Karunarathne,即使您不知道如何开始编写代码,也可以请参阅更多信息。例如,从何处放置图像?从文件或Winform中的另一个图像控件?您的具体要求是什么?例如,如果拖动的图像大于目标面板,预期的行为是什么。