VBA 用户窗体,尤其是列表视图,在空间距离和坐标方面非常棘手。我试图解决的问题是: mousedown 事件给出像素中的坐标 - 如何将其转换为重新定位另一个用户控件所需的单位,并合并用户控件的宽度属性。
给出非常具体的问题: 我有一个包含多列和水平滚动条的列表视图。我想获取鼠标单击的选定行和列,然后将框架重新定位到鼠标单击的点。
谷歌搜索只得到了部分答案——没有解决完整的问题。
共有三种不同的测量单位。像素、缇和英制点。
一旦您获得了在像素、缇和英制点之间进行转换的函数/子函数,您就可以为每个不同的任务使用正确的坐标单位:
MouseDown
事件给出以像素为单位的坐标。HitTest
(返回所选行的列表视图函数 -
尽管不是选定的列)采用缇为单位的坐标。GetScrollPos
(返回滚动条的Windows API函数
位置)给出一个以像素为单位的值。