【发布时间】:2014-09-03 11:56:40
【问题描述】:
我有GaugeControl 的集合中有三个仪表。我已经编写了它的双击事件处理程序如下:
AddHandler gc.DoubleClick, AddressOf HandleGaugeDoubleClick
Private Sub HandleGaugeDoubleClick(sender As Object, e As EventArgs)
'Gauge Information
End Sub
其中 gc 被标记为 GaugeControl 类型,并且其中添加了三个 GaugeControl。
我的问题是,我如何才能获得双击了哪个仪表的信息?
请注意,这些仪表位于一个 GaugeControl 中,并在其集合中一一添加。如何获取被双击的仪表信息。
编辑
第一次,这段代码 sn-p 运行良好,但第二次点击同一个仪表时会给出NullReferenceException。
Dim hi As BasePrimitiveHitInfo = DirectCast(gc, IGaugeContainer).CalcHitInfo(e.Location) ' hi becomes Nothing when double clicked second time on same Gauge
If Not (TypeOf hi.Element Is DevExpress.XtraGauges.Core.Model.BaseGaugeModel) Then
Dim model = DevExpress.XtraGauges.Core.Model.BaseGaugeModel.Find(hi.Element)
If model IsNot Nothing AndAlso model.Owner IsNot Nothing Then
gauge = model.Owner
End If
End If
这里变量hi 在双击同一个仪表时第二次变为空/无。由于hi 变为Nothing,因此条件变为假,剩余代码生成NullReferenceException。
查看这段代码sn-p:
If (Not (gauge.Scales Is Nothing) And (gauge.Scales.Count > 0)) Then ' Actual exception here
For i As Integer = 0 To gauge.Scales.Count - 1
scaleComponent = gauge.Scales(i)
cGaugeToBeShown.Scales.Add(scaleComponent)
Next
End If
其中 cGaugeToBeShown 是 Dim cGaugeToBeShown As New CircularGauge。
【问题讨论】:
标签: .net vb.net winforms devexpress devexpress-windows-ui