我创建了一个允许用户在窗体上拖动面板的类。我怎样才能确保 用户不会将两个面板放在一起?如果他们这样做,我想在它们重叠时移动/或突出显示其中一个控件。
我尝试在 OnMouseDown 事件中进行设置,但效果不佳。
此外,表单上面板的数量取决于表单需要显示的图片数量。每个面板在面板内都有一个图片框。
最佳答案
更好的方法是使用 Rectangle.Bounds.IntersectsWith 方法,它会为您进行检查并生成更简洁的代码。我个人并不知道任何性能问题或好处,无论是哪种方式,尽管我大胆猜测,简单地循环您的控件并用它检查它们会比构建列表和循环两者更快。
Picturebox pic = new Picturebox();
foreach(Control picturebox in Form1){
if (pic.Bounds.IntersectsWith(picturebox.Bounds))
{
//We have a problem, Houston, because we just collided!
}
}
我希望这对您有所帮助,即使您之前问过这个问题。
关于c# - 如何检查两个控件是否在 Windows 窗体中重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917537/