我正在尝试处理鼠标事件,该事件根据鼠标位置相对于接收事件的元素做出反应。事实上,事件处理程序通常会收到如下参数:
(对象发送者,MouseEventArgs e)//由IDE生成
我可以使用值e.X和e.Y来检索鼠标位置。这些是鼠标指针相对于整个窗口的值。
表单中的每个元素都有一些属性,如Location.X和Location.Y,它们表示左上角相对于其容器的位置。问题是,除非元素不在窗口内的另一个容器内,找到相对于元素的位置,如
e.X - thing.Location.X,e.Y - thing.Location.Y
不起作用。此外,我必须跟踪元素所在的位置,如果我将其放置在具有细分的面板内,我必须跟踪其上方每个细分的位置等。
如何在不跟踪容器的情况下获取鼠标与窗口元素的相对位置,或者每次在编辑时将元素从一个容器移动到另一个容器时必须编辑代码?或者如何一劳永逸地获得元素在整个窗口中的相对位置?
TNX
---编辑:
在控件中似乎有一个名为GetContainerControl的方法;我可以创建一个循环,添加每个父容器的位置,直到没有更多的容器,我会保留它作为替代,但我发现它有点笨拙