如何捕获移动的自定义控件
本文关键字:自定义控件 移动 何捕获 | 更新日期: 2023-09-27 17:56:58
我试图解释我的问题:
我在面板上获得了许多相同类型的自定义控件。
在运行时,我可以自由地移动表单中的任何custum控件(鼠标按下和鼠标移动事件),并使用bringtofront()将鼠标悬停在任何其他自定义控件上以使其覆盖所有控件。
现在我需要知道我正在移动的控件何时在任何其他控件之上,以及哪个控件在哪个控件之下。
到目前为止,我已经尝试使用拖放事件但没有成功,还有其他方法可以做到这一点,或者我必须用拖动事件重新阐述它?
谢谢大家的帮助
对不起我的英语。
编辑:
控件是纸牌游戏,我的最终目标是使用纸牌根据卡牌价值和/或颜色创建逻辑序列遵循规则。
您无法
通过拖放解决问题,因为您实际上并没有将一个控件拖放到另一个控件上。你只是在表单中移动它们。
您需要熟悉 Z 顺序,即虚拟 3D 空间中对象的从前到后的排列。若要调整 Z 顺序,可以调用派生自 System.Windows.Forms.Control
的任何对象的 BringToFront
和 SendToBack
方法。
Z 顺序也由父(容器)控件的Controls
集合公开。使用 GetChildIndex
方法,可以确定 Z 顺序中任何控件的位置。
所以现在,您需要做的就是弄清楚您正在拖动的控件结束了哪个控件。通过比较两个控件的Location
属性来执行此操作。当您知道两个控件的位置重叠时,请检查它们各自的 Z 顺序索引以查看哪个控件位于顶部。