2013-10-16 11 views
1

나는 ms 차트 컨트롤을 사용하고 있으며 다음을 원합니다. chartAreas [0]의 Y 축을 특정 형식으로 서식을 지정합니다. 이 경우 십진법이없는 숫자 여야하고 점 (1000 단위)이 있어야합니다.어떻게하면 ms 차트 컨트롤에서 축의 서식을 지정할 수

시도해보기 : chart1.ChartAreas [0] .AxisY.LabelStyle.Format = "{#. ###}";

하지만 올바른 결과를 얻지 못했습니다. 그래서 나는 FormNumber 이벤트를 얻기 위해 노력하고이 테스트 : 사용

if(e.ElementType == System.Windows.Forms.DataVisualization.Charting.ChartElementType.AxisLabels)// && e.SenderTag!=null) 
{ 
    e.LocalizedValue = e.Value.ToString("#.###", _numberFormatInfo); 
} 

:

decimal myDec = 123456.789; 
string test = myDec.ToString("#,0.00", _numberFormatInfo)); 
:이 같은 뭔가를 정상적으로 경우 동안

NumberFormatInfo _numberFormatInfo; 
_numberFormatInfo = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone(); 
_numberFormatInfo.NumberGroupSeparator = "."; 
_numberFormatInfo.NumberDecimalSeparator = ","; 

.ToString("#,0.00", _numberFormatInfo)); 

이 잘 안

테스트는 123.456,789 (사용자 컴퓨터의 문화권 설정과 무관 함)를 반환합니다.

그러나 이것은 ms 차트 컨트롤에서 작동하지 않습니다.

사람은 다음을 수행 할 수 있도록하는 방법을 나에게 설명 할 수 : 소수점없이 그룹 separator.At 같은 시간 형식으로 포인트 [0] chartArea의 Y 값

형식은 x 값 값은 실제 Uint 20131016이지만 dd-MM 형식 (예 : 16-10 = 10 월 16 일)으로 설정됩니다. 형식은 문화권 설정과 독립적이어야합니다. 누군가 나를 도울 수 있기를 바랍니다. 종류와 관련,

Matthijs

+0

작동 가능한 것으로 작동합니다. 만약 그렇다면. 코드를 추가하겠습니다. – user369122

+0

포맷을'#, ## 0. ## ' – V4Vendetta

+0

으로 설정하려고 시도 했습니까? 그 경우에는 작동하지만 클라이언트는 천 그룹핑에 대한 포인트를 원합니다. – user369122

답변

2

내가이처럼 작동있어 : 그래프 컨트롤의 NumberFormat를 이벤트를 사용

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

: 나는 그것을 원 같은

private void chart1_FormatNumber(object sender, System.Windows.Forms.DataVisualization.Charting.FormatNumberEventArgs e) 
{ 
    if(e.ElementType == System.Windows.Forms.DataVisualization.Charting.ChartElementType.AxisLabels) 
    { 
     switch(e.Format) 
     { 
      case "MyAxisXCustomFormat": 
       e.LocalizedValue = DateTime.ParseExact(e.Value.ToString(), "yyyyMMdd", null).ToString("dd-MM"); 
       break; 
      case "MyAxisYCustomFormat": 
       e.LocalizedValue = e.Value.ToString("#,###", _numberFormatInfoNLV); 
       break; 
      default: 
       break; 
     } 
    } 
} 

모든 작품; -)