翻譯|使用教程|編輯:楊鵬連|2021-04-02 10:23:25.067|閱讀 276 次
概述:本文主要介紹了高性能圖表控件LightningChart 中標記+ Mouse_Up事件問題解答。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
LightningChart.NET完全由GPU加速,并且性能經過優化,可用于實時顯示海量數據-超過10億個數據點。 LightningChart包括廣泛的2D,高級3D,Polar,Smith,3D餅/甜甜圈,地理地圖和GIS圖表以及適用于科學,工程,醫學,航空,貿易,能源和其他領域的體繪制功能。
LightningChart.NET現已加入在線訂購,SignalTools , 12 months, WPF版本原價4105元,現價只需3499元,現在搶購立享優惠!立即購買>>
問:我正在使用ChartEventMarker。我將事件附加到它上,例如“ PositionChanged,MouseClick”。兩者都可以。但是,根本不會觸發MouseUp事件。我應該什么時候觸發該事件?為什么不觸發?
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”上。您使用的是同一版本嗎?
回復:我再次檢查了一下,發現您的代碼中沒有任何錯誤,是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正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: