2015-11-09 3 views
2

У меня есть список объектов, определяется следующим образом:C# WinForms связать таблицу в список объектов

public class ChartData 
{ 
    public int New 
    { 
     get; 
     set; 
    } 

    public int Closed 
    { 
     get; 
     set; 
    } 

    public int Canceled 
    { 
     get; 
     set; 
    } 
} 

Как я могу связать WinForms-диаграмму (тип штрих-чарт) к List<ChartData>? Мне нужно иметь серию для каждого свойства объекта (т. Е. У меня будет 3 серии), и для каждой точки на графике я хочу увидеть значения для всех 3 свойств объекта.

мне удалось добавить программно ряд (они видны на графике), но когда я пытаюсь установить источник данных, он выходит из строя:

 List<ChartData> data = new List<ChartData>(); 
     // fill with random int values 
     chart.DataSource = data; 

     chart.Series.Add("New").XValueMember = "New"; 
     chart.Series["New"].ChartType = SeriesChartType.Bar; 
     chart.Series["New"].XValueType = ChartValueType.Int32; 
     chart.Series["New"].YValueType = ChartValueType.Int32; 

     chart.Series.Add("Canceled").XValueMember = "Canceled"; 
     chart.Series["Canceled"].ChartType = SeriesChartType.Bar; 
     chart.Series["Canceled"].XValueType = ChartValueType.Int32; 
     chart.Series["Canceled"].YValueType = ChartValueType.Int32; 

     chart.Series.Add("Closed").XValueMember = "Closed"; 
     chart.Series["Closed"].ChartType = SeriesChartType.Bar; 
     chart.Series["Closed"].XValueType = ChartValueType.Int32; 
     chart.Series["Closed"].YValueType = ChartValueType.Int32; 

     chart.DataBind(); 

с System.ArgumentOutOfRangeException, говоря, что Data points insertion error. Only 1 Y values can be set for this data series. .. .

Любая помощь/подсказка?

ответ

2

Заменить XValueMember с YValueMembers:

 chart.Series.Add("New").YValueMembers = "New"; 
     chart.Series["New"].ChartType = SeriesChartType.Bar; 
     chart.Series["New"].XValueType = ChartValueType.Int32; 
     chart.Series["New"].YValueType = ChartValueType.Int32; 

     chart.Series.Add("Canceled").YValueMembers = "Canceled"; 
     chart.Series["Canceled"].ChartType = SeriesChartType.Bar; 
     chart.Series["Canceled"].XValueType = ChartValueType.Int32; 
     chart.Series["Canceled"].YValueType = ChartValueType.Int32; 

     chart.Series.Add("Closed").YValueMembers = "Closed"; 
     chart.Series["Closed"].ChartType = SeriesChartType.Bar; 
     chart.Series["Closed"].XValueType = ChartValueType.Int32; 
     chart.Series["Closed"].YValueType = ChartValueType.Int32; 

enter image description here

Смежные вопросы