private void chtChart_MouseMove(object sender, MouseEventArgs e) { double currentScrollPosition = chtChart.ChartAreas[0].AxisX.ScaleView.Position; double newScrollPosition = 0; double currentPosition = 0; if (chtChart.Series.Count > 0 && e.Button == System.Windows.Forms.MouseButtons.Left && e.X > 0 && e.X < chtChart.Width) { currentPosition = chtChart.ChartAreas[0].AxisX.PixelPositionToValue(e.X); double displacement = this.lastPosition - currentPosition; newScrollPosition = chtChart.ChartAreas[0].AxisX.ScaleView.Position + displacement; chtChart.ChartAreas[0].AxisX.ScaleView.Scroll(newScrollPosition); currentPosition = chtChart.ChartAreas[0].AxisX.PixelPositionToValue(e.X); } if (chtChart.Series.Count > 0 && e.Button == System.Windows.Forms.MouseButtons.Left && (chtChart.ChartAreas[0].AxisX.ScaleView.Position >= maxBars || chtChart.ChartAreas[0].AxisX.ScaleView.Position <= 1)) { ChartScrollDirectionMode scrollDirection = chtChart.ChartAreas[0].AxisX.ScaleView.Position >= maxBars ? ChartScrollDirectionMode.LeftToRight : ChartScrollDirectionMode.RightToLeft; if (RequestUpdate != null && RequestUpdate(lastDateTimePosition, priceActionChart.IndexKeyForTime[priceActionChart.IndexKeyForTime.Count - 1], priceActionChart.IndexKeyForTime[0], scrollDirection)) { int index = priceActionChart.TimeKeyForIndex[lastDateTimePosition]; newScrollPosition = index - chtChart.ChartAreas[0].AxisX.PixelPositionToValue(e.X); chtChart.ChartAreas[0].AxisX.ScaleView.Scroll(newScrollPosition); RefreshLastPosition(e.X); } } }
private bool OnRequestUpdate(DateTime currentDateTime, DateTime startTime, DateTime endTime, ChartScrollDirectionMode scrollDirection) { if ((scrollDirection == ChartScrollDirectionMode.LeftToRight && startTime <= this.pricebarCache.StartBarDate) || (scrollDirection == ChartScrollDirectionMode.RightToLeft && endTime >= this.pricebarCache.EndBarDate)) { return(false); } else { RefreshChart(currentDateTime); return(true); } }
private bool OnRequestUpdate(DateTime currentDateTime, DateTime startTime, DateTime endTime, ChartScrollDirectionMode scrollDirection) { //if ((scrollDirection==ChartScrollDirectionMode.LeftToRight && startTime <= this.signalCacheNavigator.StartBarDate) || (scrollDirection==ChartScrollDirectionMode.RightToLeft && endTime >= this.signalCacheNavigator.EndBarDate)) //{ // return false; //} //else //{ // RefreshChart(currentDateTime); // return true; //} return(false); }