LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。
LightningChart.NET现已加入在线订购,SignalTools , 12 months, WPF版本原价4105元,现价只需3499元,现在抢购立享优惠!立即购买>>
LightningChart.NET最新试用版
问:我正在使用ChartEventMarker。我将事件附加到它上,例如“ PositionChanged,MouseClick”。两者都可以。但是,根本不会触发MouseUp事件。我应该什么时候触发该事件什么不触发/span>
private void CreateChart(){//禁用渲染,强烈建议在更新图表属性之前。Chart.BeginUpdate(); Chart.Name =“ PointLineSeries图表”; //配置x轴。AxisX axisX = Chart.ViewXY.XAxes [0];axisX.SetRange(0,20); //配置y轴。Chart.ViewXY.YAxes [0] .SetRange(0,100); PointShapeStyle符 =新的PointShapeStyle(null,Shape.Rectangle,Color.Black,Color.FromArgb(0,Color.Black),Color.White,Color.FromArgb(160,Color.Black),3,Chart.ViewXY.GetGraphSegmentInfo()。GraphHeight-30,0,0,1,GradientFillPoint.Solid,Direction.None,NULL);//在图表ChartEventMarker上的标记chartMarker = new ChartEventMarker{XValue = 2,Visible = true};chartMarker.Label.Text =“标记”;chartMarker.Label.Color = Color.Black;chartMarker.Label.VerticalAlign = AlignmentVertical.Top;chartMarker.BindToXAxis = true;chartMarker.Symbol =符 ;chartMarker.Tag = 0;chartMarker.MouseInteraction = true;Chart.ViewXY.ChartEventMarkers.Add(chartMarker);chartMarker.MouseUp + = ChartMarker_MouseUp;chartMarker.PositionChanged + = ChartMarker_PositionChanged; Chart.EndUpdate();}
回复:我们使用ChartEventMarkers测试了事件,但无法重现此问题。至少PositionChanged,MouseClick,MouseDown和MouseUp-事件正常运行。MouseUp -event会在释放鼠标按钮时触发。然后,它检查鼠标是否在组件上方(在本例中为标记)。因此,它可能不会触发的一个原因是鼠标不在标记上方。这很容易检查MoveByMouse -property是否设置为false:在标记上方按下鼠标按钮,将鼠标移开,然后释放按钮。无需移开鼠标即可执行相同的操作。
这是一个示例代码,它使用正常的MouseUp -event添加了一个标记:
ChartEventMarker marker = new ChartEventMarker();marker.MouseDown += Marker_MouseDown;marker.MouseUp += Marker_MouseUp;_chart.ViewXY.ChartEventMarkers.Add(marker);private void Marker_MouseUp(object sender, MouseEventArgs e) { _chart.Title.Text = "Mouse up"; }private void Marker_MouseDown(object sender, MouseEventArgs e) { _chart.Title.Text = "Mouse down"; }
如果您无法触发MouseUp -event,则可以向我们发布代码的一部分,在其中定义标记及其事件,然后我们可以尝试找出导致此问题的原因。
问:但是“ MouseUp”事件仍未触发。我使用的版本是8.2.1.4001(Arction.WinForms.Charting.LightningChartUltimate)
(我在下面的代码行中创建了一个示例项目。)
我的代码:
ChartEventMarker marker = new ChartEventMarker();marker.MouseDown + = Marker_MouseDown;marker.MouseUp + = ChartMarker_MouseUp;marker.PositionChanged + = ChartMarker_PositionChanged;Chart.ViewXY.ChartEventMarkers.Add(marker); private void ChartMarker_PositionChanged(对象发送者,PositionChangedChartEventMarkerEventArgs e){Chart.Title.Text =“位置已更改”;}private void Marker_MouseDown(object sender,MouseEventArgs e){Chart.Title.Text =“鼠标向下”;} private void ChartMarker_MouseUp(object sender,MouseEventArgs e){Chart.Title.Text =“鼠标向上”;}
永远不会出现在“ ChartMarker_MouseUp”上。您使用的是同一版本吗/span>
回复:我再次检查了一下,发现您的代码中没有任何错误,是LightningChart版本导致了此错误。在某些8.2版本中,MouseUp -event被某些组件(例如注释和事件标记)所困扰。此问题在更高版本的LightningChart中已修复,这解释了为什么它在我的测试中有效。
因此,我看到使事件在您的应用程序中起作用的两个可能选项:
1.将LightningChart更新为最新版本。
2.如果以上都不是选项,则必须使用解决方法。一种方法是将MouseUp -event用于图表组件,这似乎可以正常工作。只要图表具有焦点,只要释放鼠标按钮,它就会触发。例如,您可以使用布尔变量使它与标记的MouseDown -event一起使用。这是一个例子:
private bool markerClicked = false;ChartEventMarker marker = new ChartEventMarker();marker.MouseDown += Marker_MouseDown;_chart.ViewXY.ChartEventMarkers.Add(marker);_chart.MouseUp += _chart_MouseUp;private void Marker_MouseDown(object sender, MouseEventArgs e) { markerClicked = true; }private void _chart_MouseUp(object sender, MouseEventArgs e) { if (markerClicked) { markerClicked = false; // Something happens } }
在此示例中,仅当首先单击标记时,才会执行MouseUp -event中发生的任何事情。需要注意的一件事是,在这种情况下,释放按钮时鼠标光标可以位于任何位置(不必位于标记上方)。
如果对此有任何疑问,请联系客服以获取更多信息。
想要购买LightningChart正版授权,或了解更多产品信息请点击【咨询在线客服】
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!