如何判斷 滑鼠指標 移出表單

如何判斷 滑鼠指標 移出表單

如何判斷 滑鼠指標 移出表單

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