2009-10-20 3 views
12

내가 쓰고있는 Winforms 응용 프로그램에서 MS 차트 컨트롤을 사용하고 있습니다. 표시 할 산점도의 X 축 구성 요소는 Int64 데이터이며 궁극적으로 UTC 시간을 나타냅니다. Int64 데이터를 가져 와서 DataTime.FromFileTimeUTC (theTime) .ToString()을 사용하여 의미있는 최종 사용자 X 축 레이블을 표시하고 싶습니다.MS 차트 컨트롤 축 서식

dataTable.Columns.Add("mytimestamp"); 
foreach (DataRow dr in dataTable.Rows) 
{ 
    dr["mytimestamp"] = DateTime.FromFileTimeUTC(Convert.ToInt64(dr["theint64val"].ToString())); 
} 

을 그리고 X 축 값으로 "mytimestamp '항목을 사용 :

현재 I 너무 좋아하는 INT64의 날짜 시간 당량을 보유 할 메모리 DataTable에 다른 열을 생성하고있어 . 이 잘 작동하고 datetime 값으로 x 축 레이블을 표시 할 수 있습니다.

그러나 필자는 열을 작성하고 다른 열의 데이터를 복제하는 데 문제가 없지만 x 축 레이블의 형식을 지정하는 방법을 찾지 못했습니다. 이걸 놓친 것 같아. 설명서에서 AxisViewChanged 이벤트를보고 X 축 레이블 자체가 아닌 해당 데이터로 차트 제목을 설정하는 방법을 확인했습니다.

아이디어가 있으십니까? ...

+0

당신이 해결책을 발견했다? – NicoTek

+0

@NicoTek : 답변을 제공해주었습니다 ... – digEmAll

답변

1

당신이

나는 매우 늦었
yourSeries.XValueType = ChartValueType.Time; 
5

을 시도했지만 나는이 다른 사람들에게 도움이 될 수 있기를 바랍니다

chart.FormatNumber 이벤트를 구독한다이 할 수있는 가능한 방법, 예 :

void chart1_FormatNumber(object sender, FormatNumberEventArgs e) 
{ 
    if (e.ElementType == ChartElementType.AxisLabels && 
     e.ValueType == ChartValueType.Int64) 
    { 
     e.LocalizedValue = DateTime.FromFileTimeUtc((long)e.Value).ToShortDateString(); 
    } 
} 

이 이벤트 핸들러가 원하는 축을 포맷해야 할 차트의 여러 요소의 변환 중에 호출되기 때문에, 당신은 축 레이블에 사용자 정의 형식을 전달할 수 있습니다

this.chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MyAxisXCustomFormat"; 

다음 이벤트 처리기에 체크를 추가

void chart1_FormatNumber(object sender, FormatNumberEventArgs e) 
{ 
    if (e.ElementType == ChartElementType.AxisLabels && 
     e.ValueType == ChartValueType.Int64 && 
     e.Format == "MyAxisXCustomFormat") 
    { 
     e.LocalizedValue = DateTime.FromFileTimeUtc((long)e.Value).ToShortDateString(); 
    } 
} 
+1

고마워, @digEmAll, 도와 줬어! – BeemerGuy