2013-12-10 5 views
-1
for (int i = 0; i < 5; i += 1) 
      { 

       ShowReports(0); 

      } 


private void ShowReports(int ComboID) 
    { 
        Graph.Series["Series1"].ChartType = SeriesChartType.Line; 
        Graph.Series["Series1"].BorderWidth = 2; 
        Graph.Series["Series1"].MarkerStyle = MarkerStyle.Circle; 
        Graph.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "dd-MMM-yyy"; 
        Graph.ChartAreas["ChartArea1"].AxisX.Title = "Date"; 
        Graph.ChartAreas["ChartArea1"].AxisY.Title = "Average Score (%) "; 

        Graph.ChartAreas["ChartArea1"].AxisY.Minimum = 0; 
        Graph.ChartAreas["ChartArea1"].AxisY.Maximum = 100; 

        Graph.ChartAreas["ChartArea1"].AxisY.Interval = 10; 

        Graph.Series["Series1"].ToolTip = "Date :#VALX Avg Score(%) :#VALY"; 

        Graph.Titles.Add(dtReportDetails.Rows[0].ItemArray[1].ToString()); 
        Graph.Titles.Add(SetGraphTitile()); 

        Graph.Titles[0].Font = new System.Drawing.Font("Arial", 20); 
        Graph.Titles[0].ForeColor = System.Drawing.Color.Black; 

        Graph.Titles[1].Font = new System.Drawing.Font("Arial", 13); 
        Graph.Titles[1].ForeColor = System.Drawing.Color.Black; 

        Graph.Titles[1].Visible = false; 

        // Graph.Series[0].Points.AddXY(DateTime.Parse(dtReportDetails.Rows[0].ItemArray[4].ToString()), dtReportDetails.Rows[0].ItemArray[5].ToString()); 
        Graph.Series[0].XValueMember = dtReportDetails.Rows[0].ItemArray[4].ToString(); 
        Graph.Series[0].YValueMembers = dtReportDetails.Rows[0].ItemArray[5].ToString(); 
        Graph.Series[0].MarkerStyle = MarkerStyle.Circle; 

        Graph.Legends.Add("Legend1"); 
        Graph.Legends[0].Enabled = false; 
        Graph.Legends[0].Docking = Docking.Bottom; 
        Graph.Legends[0].Alignment = System.Drawing.StringAlignment.Center; 

        Graph.DataSource = dv; 
        Graph.DataBind(); 

       } 
       else if (dtReportDetails.Rows[0].ItemArray[7].ToString() == "Bar") 
       { 


        Graph.Series["Series1"].ChartType = SeriesChartType.Column; 
        Graph.Series["Series1"].BorderWidth = 2; 
        //Graph.Series["Series1"].MarkerStyle = MarkerStyle.Circle; 
        //Graph.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "dd-MMM-yyy"; 
        //Graph.ChartAreas["ChartArea1"].AxisX.Title = "Date"; 
        //Graph.ChartAreas["ChartArea1"].AxisY.Title = "Average Score (%) "; 
        Graph.Series["Series1"].ToolTip = "(#VALX,#VALY)"; 

        Graph.Titles.Add(dtReportDetails.Rows[0].ItemArray[1].ToString()); 
        Graph.Titles.Add(SetGraphTitile()); 

        Graph.Titles[0].Font = new System.Drawing.Font("Arial", 20); 
        Graph.Titles[0].ForeColor = System.Drawing.Color.Black; 

        Graph.Titles[1].Font = new System.Drawing.Font("Arial", 13); 
        Graph.Titles[1].ForeColor = System.Drawing.Color.Black; 

        Graph.Titles[1].Visible = false; 


        Graph.ChartAreas["ChartArea1"].AxisX.Title = "Learning Domains"; 
        Graph.ChartAreas["ChartArea1"].AxisY.Title = "Covered"; 




        // Graph.Series[0].Points.AddXY(DateTime.Parse(dtReportDetails.Rows[0].ItemArray[4].ToString()), dtReportDetails.Rows[0].ItemArray[5].ToString()); 
        Graph.Series[0].XValueMember = dtReportDetails.Rows[0].ItemArray[4].ToString(); 
        Graph.Series[0].YValueMembers = dtReportDetails.Rows[0].ItemArray[5].ToString(); 
        // Graph.Series[0].MarkerStyle = MarkerStyle.Circle; 


        Graph.Legends.Add("Legend1"); 
        Graph.Legends[0].Enabled = false; 
        Graph.Legends[0].Docking = Docking.Bottom; 
        Graph.Legends[0].Alignment = System.Drawing.StringAlignment.Center; 

        Graph.DataSource = dv; 
        Graph.DataBind(); 

        Random random = new Random(); 
        foreach (var item in Graph.Series[0].Points) 
        { 
         System.Drawing.Color c = System.Drawing.Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); 
         item.Color = c; 

        } 

        Graph.Series[0]["PointWidth"] = "0.2"; 
        Graph.Series[0]["BarLabelStyle"] = "Center"; 
        Graph.Series[0]["PixelPointDepth"] = "99"; 
        Graph.Series[0]["DrawingStyle"] = "Cylinder"; 

}Создания множественной диаграммы в C#

Это мой код для создания графика, для создания 1 графа я не имею никаких проблем, но и создание более одного я получу ошибку: A элемента диаграммы с именем ' Legend1 'уже существует в «LegendCollection». Потому что каждый раз создаю одни и те же легенды. Так вы можете избавиться от этой проблемы.

+0

Легко исправить было бы проверить, если легенда уже существует, и если это так удалить и повторно добавить не очень эффективным, хотя. – TheKingDave

+0

, принадлежащий сайту просмотра кода, кроме этого, Graph.Legends.Add («Legend1»); использует Legend1 все время, как указано @Dave – mnemonic

ответ

0

код для создания 5 графиков ..

for(int i=0;i< 6;i++) 
{ 
Chart1.Series.Add("Series1" + t.ToString()); 
Chart1.ChartAreas.Add("ChartArea1" + t.ToString()); 
Chart1.Legends.Add("Legend1" + t.ToString()); 

Chart1.Series[t].ChartArea = "ChartArea1" + t.ToString(); 
Chart1.Series[t].ChartType = SeriesChartType.Column; 
Chart1.Series[t].BorderWidth = 2; 

Chart1.Series[t].ToolTip = "(#VALX,#VALY)"; 
Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisX.Title = "Learning Domains"; 
Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisY.Title = "Covered"; 
} 
0

Обход проблемы с именем объекта легенды должен быть таким же простым, как установка его с помощью строки, учитывающей ваш параметр ComboID.

string myLegendTitle = "Legend" + ComboID; Graph.Legends.Add (myLegendTitle);

Для того, чтобы создать несколько графиков - на предположении, что вы используете элементы управления Chart Microsoft будет выглядеть как

for (int i = 0; i < 5; i += 1) 
{ 
    ShowReports(0); 
} 


private void ShowReports(int ComboID) 
{ 
    var myNewGraph = new System.Windows.Forms.DataVisualization.Charting.Chart(); 
    myNewGraph .Series["Series1"].ChartType = SeriesChartType.Line; 
    myNewGraph .Series["Series1"].BorderWidth = 2; 
    myParentControl.Controls.Add(myNewGraph); 
} 

ключевые моменты в том, чтобы создавать новый экземпляр диаграммы в методе ShowReports, а затем установить все свойства, как и прежде, но новый объект графика/диаграммы. Затем убедитесь, что вы добавили элемент управления в соответствующий контейнер, если его еще нет.

Если вы знаете, что у вас будет, например, 5 диаграмм, тогда другой подход состоит в том, чтобы построить их во время разработки и использовать подход переключателя для установки вашей переменной, например.

private void ShowReports(int ComboID) 
{ 
    Chart myNewGraph; 
    switch (ComboID) 
    { 
     case 1: 
      myNewGraph = Graph1; 
      break; 
    } 
    myNewGraph .Series["Series1"].ChartType = SeriesChartType.Line; 
    myNewGraph .Series["Series1"].BorderWidth = 2; 
} 
+0

Спасибо, ошибка решена. Можете ли вы помочь создать 5 одинаковых графов, но используя это, я получу только один график. – user2783430

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