2016-09-08 2 views
0

Я хочу сделать график в то же время. Я сделал это, только я выбираю параметры в combobox и после нажатия кнопки, а затем создаю графику. Теперь мне нужно сохранить некоторые параметры и после нажатия кнопки создать два, три графических. Как это сделать? Я использую MS Chart, где вводится дата из datagridview.Создайте диаграмму одновременно C#

private void graph2() 
    { 
     chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     chart1.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     chart1.Series[2].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     chart1.Series[3].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 

     if (metroComboBox1.Text == "Name 1") 
     { 
      //chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 



      for (int i = 0; i < metroGrid2.Rows.Count - 1; i++) 
      { 
       foreach (DataGridViewRow row in metroGrid2.Rows) 
       { 
        int x = 0; 
        Int32.TryParse(metroGrid2.Rows[i].Cells[4].Value.ToString(), out x); 

        DateTime dt; 


        DateTime.TryParse(metroGrid2.Rows[i].Cells[5].Value.ToString(), out dt); 

        chart1.Series[0].Points.AddXY(metroGrid2.Rows[i].Cells[5].Value.ToString(), metroGrid2.Rows[i].Cells[4].Value.ToString()); 

        if (metroComboBox3.Text == "Text 1") 
        { 
         chart1.Series[0].Color = Color.Red; 
        } 
        if (metroComboBox3.Text == "Text 2") 
        { 
         chart1.Series[0].Color = Color.Green; 
        } 
        //chart1.Series[0].Points[5].Color = Color.Blue; 
        //Console.WriteLine(chart1.Series[0].Points.AddXY(metroGrid1.Rows[i].Cells[5].Value.ToString(), metroGrid1.Rows[i].Cells[4].Value.ToString())); 
       } 
      } 
     } 
     if (metroComboBox1.Text == "Name 2") 
     { 

      for (int i = 0; i < metroGrid2.Rows.Count - 1; i++) 
      { 
       foreach (DataGridViewRow row in metroGrid2.Rows) 
       { 
        int x = 0; 
        Int32.TryParse(metroGrid2.Rows[i].Cells[4].Value.ToString(), out x); 

        DateTime dt; 


        DateTime.TryParse(metroGrid2.Rows[i].Cells[5].Value.ToString(), out dt); 

        chart1.Series[1].Points.AddXY(metroGrid2.Rows[i].Cells[5].Value.ToString(), metroGrid2.Rows[i].Cells[4].Value.ToString()); 
        if (metroComboBox3.Text == "Text1") 
        { 
         chart1.Series[1].Color = Color.Red; 
        } 
        if (metroComboBox3.Text == "text2") 
        { 
         chart1.Series[1].Color = Color.Green; 
        } 
        //Console.WriteLine(chart1.Series[00].Points.AddXY(metroGrid1.Rows[i].Cells[5].Value.ToString(), metroGrid1.Rows[i].Cells[4].Value.ToString())); 
       } 
      } 
     } 

........

+0

Вам нужно создать новый график для каждого графического вы хотите. –

+0

Или добавьте ChartAreas. Это поможет увидеть изображение желаемого результата. Поскольку вопрос довольно неясен! – TaW

+0

@ShannonHolsinger, нет, нужно использовать одну диаграмму, где будет много графики. – Andrey

ответ

0
private void graph2() 
    { 
     chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     chart1.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     chart1.Series[2].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     chart1.Series[3].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
     setChart(); 
    } 

    private void setChart() 
    { 
     switch (metroComboBox1.SelectedText.ToString()) 
     { 
      case "Name 1": 
       finalizeChart(); 
       break; 
      case "Name 2": 
       finalizeChart(); 
       break; 
     } 
    } 
    private void finalizeChart() 
    { 
     for (int i = 0; i < metroGrid2.Rows.Count - 1; i++) 
     { 
           int x = 0; 
       Int32.TryParse(metroGrid2.Rows[i].Cells[4].Value.ToString(), out x); 

       DateTime dt; 


       DateTime.TryParse(metroGrid2.Rows[i].Cells[5].Value.ToString(), out dt); 

       chart1.Series[i].Points.AddXY(metroGrid2.Rows[i].Cells[5].Value.ToString(), metroGrid2.Rows[i].Cells[4].Value.ToString()); 

       if (metroComboBox3.Text == "Text 1") 
       { 
        chart1.Series[i].Color = Color.Red; 
       } 
       if (metroComboBox3.Text == "Text 2") 
       { 
        chart1.Series[i].Color = Color.Green; 
       } 
       //chart1.Series[0].Points[5].Color = Color.Blue; 
       //Console.WriteLine(chart1.Series[0].Points.AddXY(metroGrid1.Rows[i].Cells[5].Value.ToString(), metroGrid1.Rows[i].Cells[4].Value.ToString())); 

     } 
    } 
+0

Я не видел никакой разницы между metroComboBox.SelectedText = "Name 1" и когда это «Name 2» «Я думаю, что это может быть проблема с вырезанием/вставкой, поэтому я оставил место для обработки другой. Что должно отличаться между именем 1 и именем 2? –

+0

Ошибка = указатель вне диапазона. Индекс должен быть положительным, и он не должен превышать размер коллекции. В этой строке: chart1.Series [i] .Points.AddXY (metroGrid2.Rows [i] .Cells [5] .Value.ToString(), metroGrid2.Rows [i] .Cells [4] .Value.ToString()); – Andrey

+0

имя 1 и имя 2 являются comboBox.Text – Andrey

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