如何判斷 滑鼠指標 移出表單
如何判斷 滑鼠指標 移出表單
Public Class Form1
Private WithEvents tmr As New Timer ' 宣告Timer 元件
' WithEvents : 指定宣告的成員變數會參考可以引發事件之類別的執行個體。
Private Sub Form1_Load(ByVal s As Object, ByVal e As EventArgs) Handles MyBase.Load
tmr.Interval = 10 ' 設定引發Elapsed 事件的間隔(毫秒)。
tmr.Start() ' 計時器啟動( 將Enabled 設定為true,開始引發Elapsed 事件。)
End Sub
' Timer.Tick 事件: 發生在指定的計時器間隔已耗用,且計時器被啟用時。
Private Sub tmr_Tick(ByVal s As Object, ByVal e As EventArgs) Handles tmr.Tick
' 方法 1
If Point_In_Form(MousePosition.X, MousePosition.Y) Then
Text = "滑鼠指標在表單中.."
Else
Text = "滑鼠指標在表單外.."
End If
' MousePosition 屬性: 取得滑鼠游標在螢幕座標中的位置。
' MousePosition = Me.MousePosition = 表單.MousePosition
' 方法 2
Dim rgn As New Region(New Rectangle(Left, Top, Width, Height))
' 或
' Dim rgn As New Region(New RectangleF(Left, Top, Width, Height))
' Region : 描述由矩形和路徑構成的圖形形狀內部。
' IsVisible 方法: 測試指定的矩形是否包含在這個Region 中。
' Rectangle 成員: 儲存四個為一組的整數,表示矩形位置和大小。
' RectangleF 成員: 儲存四個為一組的浮點數值(Floating-Point Number),表示矩形的位置和大小。
If rgn.IsVisible(MousePosition.X, MousePosition.Y) Then
Text = "滑鼠指標在表單中.."
Else
Text = "滑鼠指標在表單外.."
End If
' Text = Me.Text = 表單.Text : 表單標題列文字
End Sub
' 判斷滑鼠指標位置是否落於表單中( 藉由上下左右,寬,高來判別)
Private Function Point_In_Form(ByVal x As Integer, ByVal y As Integer) As Boolean
Return x >= Left And x <= Left + Width And y >= Top And y <= Top + Height
End Function
End Class