------------------------------------------------------------------------------------------------------------------------------
모든 차트 영역 요소의 위치를 계산하기 전에는 PositionToValue 메서드를 호출할 수 없습니다
PositionToValue method cannot be called prior to calculating position of all chart area elements.
MouseMove 이벤트중에 PixelPositionToValue를 호출해서 발생했는데
아래와 같이 HitTest를 먼저 진행해서 하면 해결된다
var result = chart.HitTest(e.X, e.Y);
if (result.ChartArea != null)
{
var xValue = chartArea.AxisX.PixelPositionToValue(e.X);
}
------------------------------------------------------------------------------------------------------------------------------
System.ArgumentException: '이름이 '차트이름'인 차트 요소를 'SeriesCollection'에서 찾을 수 없습니다.'
chart.ChartAreas[0].CursorX.SetCursorPixelPosition(mousePosition, true);
할때 발생했는데 이거도 역시 이벤트 충돌로 인해 발생한 결과로 다음과 같이 수정했다
//X커서 표시(실수)
{
var x = mousePosition.X;
x = Math.Max(0, x);
x = Math.Min(x, chart.Width);
double xValue = chart.ChartAreas[0].AxisX.PixelPositionToValue(x);
chart.ChartAreas[0].CursorX.Position = xValue;
position = chart.ChartAreas[0].CursorX.Position;
}
------------------------------------------------------------------------------------------------------------------------------
System.ArgumentException: 'Not a legal OleAut date.'
var dataPoint = result.Series.Points[result.PointIndex];
var date = DateTime.FromOADate(dataPoint.XValue);
화면에서 포인터를 가져와서 사용할경우 간헐적으로 값이 오류나면서 생기는 버그인데
범위지정을 다 할 필요는 없고
var dataPoint = result.Series.Points[result.PointIndex];
if (dataPoint.XValue >= 2958465)
{
return;
}
var date = DateTime.FromOADate(dataPoint.XValue);
이렇게 고치면 된다
'윈도우폼' 카테고리의 다른 글
윈도우용 대화형 프로그램 설정 (0) | 2023.09.26 |
---|---|
C# 환경변수 설정 (0) | 2022.02.16 |
잘 안 쓰는 윈폼코드 모음 (0) | 2021.07.19 |