You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET如何获取鼠标释放点击时悬停的对象?

在VB.NET中获取鼠标释放时悬停的控件(无需坐标计算)

嘿,这个需求太常见了!完全不用纠结坐标的问题,.NET框架其实已经给我们准备好了高效的解决方案,根本不用自己折腾坐标计算~

方法一:利用原生拖拽框架(推荐)

如果你的场景是标准的拖拽操作,直接用.NET内置的拖拽事件就能完美解决,系统会自动帮你跟踪鼠标悬停的目标控件,全程不需要手动处理坐标:

步骤1:启动拖拽(源控件的MouseDown事件)

在你要拖拽的控件的MouseDown事件里,调用DoDragDrop方法,传递拖拽的数据(比如控件本身):

Private Sub SourceControl_MouseDown(sender As Object, e As MouseEventArgs) Handles SourceControl.MouseDown
    ' 传递源控件作为拖拽数据,设置允许的拖拽效果
    DoDragDrop(sender, DragDropEffects.Move)
End Sub

步骤2:允许拖拽进入目标控件

在可能接受拖拽的控件的DragEnter事件里,设置允许的拖拽效果:

Private Sub TargetControl_DragEnter(sender As Object, e As DragEventArgs) Handles TargetControl.DragEnter
    ' 验证拖拽数据的类型是否符合要求
    If e.Data.GetDataPresent(GetType(Control)) Then
        e.Effect = DragDropEffects.Move ' 允许拖拽操作
    Else
        e.Effect = DragDropEffects.None ' 拒绝拖拽
    End If
End Sub

步骤3:获取释放时的悬停控件(DragDrop事件)

当鼠标释放时,目标控件的DragDrop事件会触发,这里的sender就是鼠标悬停的控件,同时你还能拿到拖拽的源控件:

Private Sub TargetControl_DragDrop(sender As Object, e As DragEventArgs) Handles TargetControl.DragDrop
    ' 获取拖拽的源控件
    Dim sourceControl As Control = DirectCast(e.Data.GetData(GetType(Control)), Control)
    ' 获取鼠标释放时悬停的目标控件
    Dim hoveredControl As Control = DirectCast(sender, Control)
    
    ' 这里可以添加你的业务逻辑
    MessageBox.Show($"已将 {sourceControl.Name} 释放到 {hoveredControl.Name} 上")
End Sub

方法二:全局获取任意悬停控件(无需指定目标)

如果你的场景是需要在任意控件上释放,不用提前指定目标,那可以用Control.FromPoint方法——这是系统原生的高效方法,完全不用担心性能问题(比自己遍历控件计算坐标快多了):

Private Sub SourceControl_MouseUp(sender As Object, e As MouseEventArgs) Handles SourceControl.MouseUp
    ' 获取当前鼠标位置对应的控件(屏幕坐标直接传入即可)
    Dim hoveredControl As Control = Control.FromPoint(Cursor.Position)
    
    If hoveredControl IsNot Nothing Then
        MessageBox.Show($"鼠标释放时悬停在控件:{hoveredControl.Name}")
    Else
        MessageBox.Show("鼠标释放时未悬停在任何控件上")
    End If
End Sub

为什么不用坐标也高效?

不管是原生拖拽框架还是Control.FromPoint,都是系统底层提供的功能,内部已经做了最优的性能处理,完全不会出现你担心的“效率低下”问题——那些低效的情况通常是自己手动遍历所有控件、逐个判断坐标范围导致的,而这两种方法都避开了这种操作。

内容的提问来源于stack exchange,提问作者tranquila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:08:29