如何捕获移动的自定义控件

本文关键字:自定义控件 移动 何捕获 | 更新日期: 2023-09-27 17:56:58

我试图解释我的问题:

我在面板上获得了许多相同类型的自定义控件。

运行时,我可以自由地移动表单中的任何custum控件(鼠标按下和鼠标移动事件),并使用bringtofront()将鼠标悬停在任何其他自定义控件上以使其覆盖所有控件。

现在我需要知道我正在移动的控件何时在任何其他控件之上,以及哪个控件在哪个控件之下。

到目前为止,我已经尝试使用拖放事件但没有成功,还有其他方法可以做到这一点,或者我必须用拖动事件重新阐述它?

谢谢大家的帮助

对不起我的英语。

编辑:

控件是纸牌游戏,我的最终目标是使用纸牌根据卡牌价值和/或颜色创建逻辑序列遵循规则。

如何捕获移动的自定义控件

您无法

通过拖放解决问题,因为您实际上并没有将一个控件拖放到另一个控件上。你只是在表单中移动它们。

您需要熟悉 Z 顺序,即虚拟 3D 空间中对象的从前到后的排列。若要调整 Z 顺序,可以调用派生自 System.Windows.Forms.Control 的任何对象的 BringToFrontSendToBack 方法。

Z 顺序也由(容器)控件的Controls集合公开。使用 GetChildIndex 方法,可以确定 Z 顺序中任何控件的位置。

所以现在,您需要做的就是弄清楚您正在拖动的控件结束了哪个控件。通过比较两个控件的Location属性来执行此操作。当您知道两个控件的位置重叠时,请检查它们各自的 Z 顺序索引以查看哪个控件位于顶部。