从头创建 Visual Basic .NET 控件 (六)
2024-07-10 13:04:02
供稿:网友
菜鸟学堂:
第 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 命名空间中获得的,数学函数通常都保存在该命名空间中。