c# - c# 查找鼠标相对于表单元素的位置
问题描述
我正在尝试处理一个鼠标事件,该事件根据鼠标相对于接收事件的元素的位置做出反应。问题是,事件处理程序通常会接收如下参数:
(object sender, MouseEventArgs e) // 由 IDE 生成
我可以使用 eX 和 eY 值检索鼠标位置。这些是鼠标指针相对于整个窗口的值。
表单中的每个元素都有一些属性,例如 Location.X 和 Location.Y,它们表示左上角相对于其容器的位置。问题是,除非元素不在窗口内的另一个容器内,否则使用类似的东西找到相对于元素的位置
eX - thing.Location.X, eY - thing.Location.Y
不管用。此外,我必须跟踪元素的位置,如果我将它放在带有细分的面板中,我必须跟踪其上方每个细分的位置,等等。
如何在不跟踪容器的情况下获取鼠标与窗口中元素的相对位置,或者每次在编辑时将元素从一个容器移动到另一个容器时都必须编辑代码?或者我如何一劳永逸地获得元素与整个窗口的相对位置?
tnx
- - 编辑:
似乎在控件中有一个名为 GetContainerControl 的方法;我可以创建一个循环来添加每个父容器的位置,直到没有更多容器为止,我会保留它作为替代方案,但我觉得它有点笨拙
解决方案
推荐阅读
- linux - 将linux命令脚本翻译成powershell命令脚本
- build - 拉取请求成功完成时向 bug 添加标签 Devops
- python - mnist digit 相似度模型,每次输出不同
- pymodbus - 是否可以在 TCP 模式下使用 unitid 大于 255 的“read_holding_registers”?
- spring - 如何在 Spring MVC 4.3 中设置 FORM 绑定以在控制器中拥有继承树的适当子对象
- r - 无法在 R 3.6.3 中安装 lme4 包。在 macOS Catalina 上
- java - 解压和重新压缩 jar 后出现“无主清单属性”
- python - TypeError: 图片数据不能转换为浮点数 // 导入.png图片时
- excel - Excel VBA For Loop 多次运行
- php - Laravel ViewComposer 使用的值应该存储在哪里