從頭創(chuàng)建 Visual Basic .NET 控件 (6)
發(fā)表時間:2023-04-07 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第 5 步:使控件響應(yīng)用戶要允許用戶更改燈的顏色,必須檢測到用戶的鼠標(biāo)單擊操作。有經(jīng)驗的 Visual Basic 開發(fā)人員都知道,可以使用多種方法實現(xiàn)這一目的。我們使用最簡單的一種方法,即檢測 M...
第 5 步:使控件響應(yīng)用戶
要允許用戶更改燈的顏色,必須檢測到用戶的鼠標(biāo)單擊操作。有經(jīng)驗的 Visual Basic 開發(fā)人員都知道,可以使用多種方法實現(xiàn)這一目的。我們使用最簡單的一種方法,即檢測 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
事件處理非常簡單。檢查鼠標(biāo)單擊的位置和每個圓心之間的距離。(請注意,圓心分別位于控件下方 1/6、1/2 和 5/6 的位置。如果不太明白,可以在紙上畫出來看看。)如果計算出的距離小于圓的半徑,則更改 Status 屬性。
距離由 Distance 函數(shù)使用您可能在代數(shù)課中學(xué)過的公式計算。請注意,平方根函數(shù)是從 System.Math 命名空間中獲得的,數(shù)學(xué)函數(shù)通常都保存在該命名空間中。