首页 > 解决方案 > c# 查找鼠标相对于表单元素的位置

问题描述

我正在尝试处理一个鼠标事件,该事件根据鼠标相对于接收事件的元素的位置做出反应。问题是,事件处理程序通常会接收如下参数:

(object sender, MouseEventArgs e) // 由 IDE 生成

我可以使用 eX 和 eY 值检索鼠标位置。这些是鼠标指针相对于整个窗口的值。

表单中的每个元素都有一些属性,例如 Location.X 和 Location.Y,它们表示左上角相对于其容器的位置。问题是,除非元素不在窗口内的另一个容器内,否则使用类似的东西找到相对于元素的位置

eX - thing.Location.X, eY - thing.Location.Y

不管用。此外,我必须跟踪元素的位置,如果我将它放在带有细分的面板中,我必须跟踪其上方每个细分的位置,等等。

如何在不跟踪容器的情况下获取鼠标与窗口中元素的相对位置,或者每次在编辑时将元素从一个容器移动到另一个容器时都必须编辑代码?或者我如何一劳永逸地获得元素与整个窗口的相对位置?

tnx

- - 编辑:

似乎在控件中有一个名为 GetContainerControl 的方法;我可以创建一个循环来添加每个父容器的位置,直到没有更多容器为止,我会保留它作为替代方案,但我觉得它有点笨拙

标签: c#positionmouse

解决方案


推荐阅读