Visual Basic检测鼠标位置

时间:2018-02-27 09:24:56

标签: vb.net

所以我想在Visual Basic中制作一个迷宫游戏,如果光标到达某个面板,它会显示一个消息框,然后表格关闭。

问题是如何? 我试过了

TS2314: Generic type 'PropertyList' requires 3 type argument(s)

并没有奏效。我得到了

  

错误1重载解析失败,因为无法访问' ='可   用这些参数调用:       ' Public Shared Operator =(left As System.Drawing.Point,right As System.Drawing.Point)As Boolean':Type of Value   ' System.Windows.Forms.Panel'无法转换为   ' System.Drawing.Point&#39 ;. C:\ Documents and Settings \ Admin \ Local   设置\应用程序数据\临时   Projects \ WindowsApplication1 \ Form1.vb 4 12 WindowsApplication1

请记住,我希望消息框只出现一次,因为有时当光标在面板上时,它会显示多个msgbox,直到光标在那里。

我希望鼠标位于面板内并运行代码。

2 个答案:

答案 0 :(得分:0)

我相信有一个名为'鼠标输入'事件的事件你可以使用,所以如果你键入消息框的代码,即使对于你希望它们鼠标悬停的控件,它也会在每次执行时弹出。

如果计数器已经在1上,那么只要一次制作一个加1的计数器并且不执行该代码就可以了。

答案 1 :(得分:0)

我进行了一些搜索,发现:Determine whether the mouse is over a control? (over a Control pixel range)

我刚用按钮敲了一下测试,似乎工作正常。请适应您自己的需求。

Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint
    Debug.WriteLine(MouseIsOverControl(Button1))
End Sub

Public Function MouseIsOverControl(ByVal c As Control) As Boolean
    Return c.ClientRectangle.Contains(c.PointToClient(Control.MousePosition))
End Function

在这个例子中,我只输出"真或假"确定检测。您可以根据自己的需要对其进行测试和更改,以确定您要执行的操作,具体取决于' true / false'。希望这会有所帮助。