2014-10-02 1 views
0

나는 많은 그래프를 가지고 있으며 그래프를 작성하고 있으며 일부는 각 X 값에 사용자 정의 색상을 지정하고 범례에도 해당 항목이 있어야합니다. 다음 코드는 이것을 달성하지만 범례에는 항상 초기 값이 존재하는데, 이는 현재 무의미합니다. 원래의 기본 범례 항목을 제거/숨기기/삭제하는 방법은 무엇입니까? 단지 참조 용으로 chartColors 배열은 순회 할 색상 배열입니다. http://msdn.microsoft.com/en-us/library/vstudio/dd456659(v=vs.100).aspxin .net 차트 범례 추가 된 사용자 정의 항목 만 표시

에 따르면

mainChart.Legends.Add(new Legend("legend")); 
mainChart.Legends["legend"].Docking = Docking.Bottom; 

foreach (Series ser in mainChart.Series) 
{ 
    int i = 0; 
    foreach (DataPoint point in ser.Points) 
    { 
     point.Color = chartColors[i % chartColors.Count()]; 
     mainChart.Legends["legend"].CustomItems.Add(point.Color,point.AxisLabel); 
     i++; 
    } 
} 

"이 컬렉션의 범례 항목은 항상 전설에서 다른 범례 항목의 끝에 붙어있다."

그래서 아마 내가 어떻게 제거합니까, 내 질문에 명확히 "다른 범례 항목은"

편집 : 나는이 대답을 발견하지만, 윈폼 그들이 을 추가 함수를 호출하는 방법을 잘 메신저입니다 좋아 414,WinForms.Charting suppress autogenerating legend

답변

0

은 내가 기지로 게시 질문에서 awnser를 사용하지만 방법은 비 사용자 정의 것들

불러 만 제거하기 전에 점을 추가, 경우 다른 사람이 그것을 할 필요에 게시물을 그것을 알아 냈다 차트의 모든 시리즈
protected void chartarea1_CustomizeLegend(object sender,System.Web.UI.DataVisualization.Charting.CustomizeLegendEventArgs e) 
    { 
     int customItems = ((Chart)sender).Legends[0].CustomItems.Count(); 
     if (customItems>0) 
     { 
      int numberOfAutoItems = e.LegendItems.Count()-customItems; 
      for (int i = 0; i < numberOfAutoItems; i++) 
      { 
       e.LegendItems.RemoveAt(0); 
      } 
     } 

    } 
0

다음을 수행하십시오

series .IsVisibleInLegend = false; 
관련 문제