如何在Visual Basic中实现鼠标拖动?
-
09-06-2019 - |
题
我需要在 Visual Basic 2005 Express 中创建一个快速的旋钮控件,通过用鼠标“抓住”它并向上/向下移动光标来增加/减少其值。因为旋钮本身不移动,所以我需要继续跟踪控件矩形之外的鼠标移动。
我用一个 Label
与 ImageList
来实现这个(我有一个包含 127 个位图的列表,代表各个位置的旋钮)。
我应该对哪些事件做出反应?
解决方案
您需要该控件来处理三个事件:鼠标按下、鼠标移动和鼠标向上。在鼠标按下事件中,您需要捕获鼠标。这意味着鼠标消息被发送到具有捕获的控件。在鼠标移动事件中,如果捕获了输入,则根据鼠标移动的量更新显示的图像。在鼠标弹起事件中,如果捕获了输入,则释放捕获。
布尔值 jjnguy 建议是不必要的,因为控件的 Capture 属性是可读的,因此可以确定是否已设置捕获。
其他提示
您的问题是根据鼠标在 mouse_move 事件中报告的坐标确定必须显示哪个位图。您需要执行一些魔法来转换坐标并得出可用于选择正确图像的值。
听起来并不太复杂,只是在数学上进行了一些尝试和错误。Skizz 已经向您展示了如何捕捉事件。
不隶属于 StackOverflow