组件事件

所有组件,不管是形状(Shapes)还是装饰件(Decorators),以及指针(Pointer)和指针帽(Cap)都可以触发事件。

需要注意的是,只有组件的HitTestable属性设置为True,这个组件才能触发事件,所以如果你不希望某个组件触发事件,只需将其HitTestable属性设置为False即可。

仪表有12个组件事件,我把这12个事件分成了三组,后面的分组在前面一组的基础上,会增加新的e参数,所以越往后的分组,e参数越多:

事件 触发条件 e参数
ItemClick 单击某个组件后触发
Form: 返回控件所在的窗口
Sender     返回触发事件的控件,类型Winform.Gauges
Container 返回触发事件的底层控件,也就是Sender(WinForm.Gauges)的底层控件
Gauge 返回触发事件的底层仪表。
Item 返回触发事件的组件。
ItemEnabled 判断该组件是否可以被命中,也就是是否可以响应时间,也就是HitTestable属性是否为True
ItemHot 判断鼠标是否悬停在组件之上。
ItemPressed 判断组件是否处于"按下"状态。

 

ItemDoubleClick 双击某个组件后触发
ItemMouseEnter 鼠标进入某个组件后触发
ItemMouseLeave 鼠标离开某个组件后触发
ItemStateChanged 某个组件的状态发生变化后触发
ItemMouseDown 在某个组件上按下鼠标后触发 增加的e参数有:
 
Button 返回按下的鼠标按键
Clicks 返货按下或释放的鼠标次数
Location 返回触发时间时的鼠标位置
X 返回触发事件时鼠标的X轴位置
Y 发挥触发事件时鼠标的Y轴位置

 

ItemMouseUp 在某个组件上释放鼠标后触发
ItemMouseMove 在某个组件上移动鼠标后触发
PointerDragBegin 开始拖拽某个指针时触发 这四个事件是指针专属的,增加的e参数有:
 
Pointer 返回触发事件的指针
NewValue 返回指针的新建议值

 

PointerDragEnd 结束拖拽某个指针时触发
PointerDragMove 在拖拽某个指针的过程中触发
PointerDragCancel 按ESC键取消拖拽某个指针后触发

一个示例

例如想通过拖动指针来调整指针的当前值,只需在PointerDragMove加上一行代码:

e.Pointer.Value = e.NewValue

如果希望按下鼠标后,将指针移到鼠标位置,可以在ItemMouseDown事件中加上代码:

e.Gauge.Pointer.Value = e.Gauge.GetValueAt(e.X, e.Y)

区分组件

一个仪表会有很多组件,如果要区分组件,可以给组件设置Name属性,然后在代码中判断Name属性来区分组件。

需要注意的是,主指针和指针帽没有Name属性,所以无法通过Name属性判断。

下面是一个ItemClick事件的代码,演示了如何区分各种组件:

Dim rg As RadialGauge = e.Gauge
If
e.Item Is rg.Pointer Then
   
'单击主指针的代码
ElseIf
e.Item Is rg.Cap Then
   
'单击指针帽的代码
Else

   
Select Case e.Item.Name
       
Case "名称1"
           
'单击"名称1"组件的代码
       
Case "名称2"
           
'单击"名称2"组件的代码
   
End Select
End
If

有的时候,某个类型的组件只有一个,那么可以不设置Name属性,直接在代码中判断组件类型,例如:

If TypeOf e.Item Is GaugeRange Then '如果单击的是Range
    e.Gauge.Value = e.Gauge.Pointer.GetValueAt(e.X, e.Y)
'则将指针移到鼠标位置
End
If

重要提示:

1、如果某个组件不触发事件,请检查其HitTestable属性是否被误设置为False了,一定要设置为True才行的哦。

2、HitTestable属性默认为True,如果某些组件不需要触发事件,请记得将其HitTestable属性设置为False,以免其干扰其他组件。


本页地址:http://www.foxtable.com/webhelp/topics/3920.htm