第 5 步:使控件響應用戶 要允許用戶更改燈的顏色,必須檢測到用戶的鼠標單擊操作。有經驗的 Visual Basic 開發人員都知道,可以使用多種方法實現這一目的。我們使用最簡單的一種方法,即檢測 MouseUp 事件。下面是檢測用戶單擊并更改 Status 屬性以與之匹配的代碼:
Private Sub TrafficLight_MouseUp(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles MyBase.MouseUp Dim nMidPointX As Integer = CInt(Me.Size.Width * 0.5) Dim nCircleRadius As Integer = nMidPointX If Distance(e.X, e.Y, nMidPointX, CInt(Me.Size.Height / 6)) _ < nCircleRadius Then Me.Status = TrafficLightStatus.statusRed Exit Sub End If If Distance(e.X, e.Y, nMidPointX, CInt(Me.Size.Height / 2)) _ < nCircleRadius Then Me.Status = TrafficLightStatus.statusYellow Exit Sub End If If Distance(e.X, e.Y, nMidPointX, CInt((5 * Me.Size.Height) / 6)) _ < nCircleRadius Then Me.Status = TrafficLightStatus.statusGreen End If
End Sub
Private Function Distance(ByVal X1 As Integer, _ ByVal Y1 As Integer, _ ByVal X2 As Integer, _ ByVal y2 As Integer) As Integer Return CInt(System.Math.Sqrt((X1 - X2) ^ 2 + (Y1 - y2) ^ 2)) End Function
事件處理非常簡單。檢查鼠標單擊的位置和每個圓心之間的距離。(請注意,圓心分別位于控件下方 1/6、1/2 和 5/6 的位置。如果不太明白,可以在紙上畫出來看看。)如果計算出的距離小于圓的半徑,則更改 Status 屬性。
距離由 Distance 函數使用您可能在代數課中學過的公式計算。請注意,平方根函數是從 System.Math 命名空間中獲得的,數學函數通常都保存在該命名空間中。
|