Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net GaugeControl双击事件处理程序_.net_Vb.net_Winforms_Devexpress_Devexpress Windows Ui - Fatal编程技术网

.net GaugeControl双击事件处理程序

.net GaugeControl双击事件处理程序,.net,vb.net,winforms,devexpress,devexpress-windows-ui,.net,Vb.net,Winforms,Devexpress,Devexpress Windows Ui,我的GaugeControl集合中有三个仪表。我编写了双击事件处理程序,如下所示: AddHandler gc.DoubleClick, AddressOf HandleGaugeDoubleClick Private Sub HandleGaugeDoubleClick(sender As Object, e As EventArgs) 'Gauge Information End Sub 其中gc标记为GaugeControl类型,并在其中添加了三个GaugeControl。 我

我的
GaugeControl
集合中有三个仪表。我编写了双击事件处理程序,如下所示:

AddHandler gc.DoubleClick, AddressOf HandleGaugeDoubleClick

Private Sub HandleGaugeDoubleClick(sender As Object, e As EventArgs)
   'Gauge Information
End Sub
其中gc标记为GaugeControl类型,并在其中添加了三个GaugeControl。

我的问题是,如何获得双击哪个仪表的信息

注意这些仪表在一个GaugeControl中,并在其集合中逐个添加。我将如何获得双击的仪表信息

编辑

第一次,此代码段运行良好,但在同一个仪表上单击时,第二次出现
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
变为时,条件变为false,其余代码生成
NullReferenceException

请参阅以下代码片段:

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

我建议您使用以下事件:

AddHandler gc.DoubleClick, AddressOf HandleGaugeDoubleClick

Private Sub HandleGaugeDoubleClick(sender As Object, e As EventArgs)
   'Gauge Information
End Sub
使用DevExpress.XtraGauges.Base;
使用DevExpress.XtraGauges.Core.Primitive;
//...
无效计量器控件1\u鼠标双击(对象发送器,鼠标事件目标e){
BasePrimitiveHitInfo hi=((IGaugeContainer)gaugeControl1).CalcHitInfo(e.位置);
if(!(hi.Element为DevExpress.XtraGauges.Core.Model.BaseGaugeModel)){
var model=DevExpress.XtraGauges.Core.model.BaseGaugeModel.Find(hi.Element);
if(model!=null&&model.Owner!=null){
IGauge仪表=型号。所有者;
//用仪表做些什么
}
}
}
导入DevExpress.XtraGauges.Base
导入DevExpress.XtraGauges.Core.Primitive
'...
专用子仪表控制1\u鼠标双击(发送方作为对象,e作为鼠标eventargs)
Dim hi As BasePrimitiveHitInfo=DirectCast(gaugeControl1,IGaugeContainer)。CalcHitInfo(e.Location)
如果不是(hi.Element的类型为DevExpress.XtraGauges.Core.Model.BaseGaugeModel),则
Dim模型=DevExpress.XtraGauges.Core.model.BaseGaugeModel.Find(hi.Element)
如果model不是空的,那么model.Owner也不是空的
尺寸仪表,如IGauge=型号。所有者
“用仪表做点什么
如果结束
如果结束
端接头

相关示例:

谢谢您的帮助!当我在上面粘贴快照时,我如何获得第二个循环?你的问题听起来有点奇怪,因为所有的仪表都可以通过GaugeControl.gauges集合获得。我的解决方案提供了对“点击”量表的访问。是的!我明白了。我对你的代码做了一些修改。将尺寸表替换为IGauge,将尺寸表替换为CircularGauge。虽然我还需要找到仪表类型,但它现在正在工作。谢谢你的回答。它工作得很好,但当我在同一个仪表上双击第二次时,它给出了NullRefException。变量“hi”包含“Nothing”。你能帮忙吗?@FaizanMubasher无法用我的代码片段重现NullRef。。。你修改过这个吗?如果是这样,请相应地更新您的问题-我稍后会检查它