Den Nemoff
Den Nemoff

Reputation: 31

How to create a chart using c#

I need to create a chart from data which I can acquire from 6 comboboxes that I have.

The data in the comboboxes are numbers. Once I select the desired numbers in comboboxes I then press a button which creates a chart based on these values.

My problem is that I can do it only once. Once I change values in comboboxes and click on the button again I receive an exception.

I understand that I need to create an instance of new chart everytime I press the button but I dont know how.

private void button1_Click(object sender, EventArgs e)
{
    chart1.ChartAreas.Add("chart");
    chart1.ChartAreas["chart"].AxisX.Minimum = 0;
    chart1.ChartAreas["chart"].AxisX.Maximum = 20;
    chart1.ChartAreas["chart"].AxisX.Interval = 1;

    chart1.ChartAreas["chart"].AxisY.Minimum = 0;
    chart1.ChartAreas["chart"].AxisY.Maximum = 100;
    chart1.ChartAreas["chart"].AxisY.Interval = 5;

    chart1.Series.Add("xxx");
    chart1.Series.Add("yyy");

    chart1.Series["xxx"].Color = Color.Black;
    chart1.Series["yyy"].Color = Color.Red;

    chart1.Series["xxx"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
    chart1.Series["yyy"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

    chart1.Series["xxx"].Points.AddXY(comboBox1.Text, comboBox4.Text);
    chart1.Series["yyy"].Points.AddXY(comboBox1.Text, comboBox4.Text);

    chart1.Series["xxx"].Points.AddXY(comboBox2.Text, comboBox5.Text);
    chart1.Series["yyy"].Points.AddXY(comboBox1.Text, comboBox4.Text);

    chart1.Series["xxx"].Points.AddXY(comboBox3.Text, comboBox6.Text);
    chart1.Series["yyy"].Points.AddXY(comboBox1.Text, comboBox4.Text);
}

Upvotes: 0

Views: 11188

Answers (1)

Gaz Winter
Gaz Winter

Reputation: 2989

Try setting chart1 to a new instance of Chart (i assume thats what it is!)

So it would be like this:

 private void button1_Click(object sender, EventArgs e) 
 { 
    chart1 = new Chart();
    chart1.ChartAreas.Add("chart"); 
    chart1.ChartAreas["chart"].AxisX.Minimum = 0; 
    chart1.ChartAreas["chart"].AxisX.Maximum = 20; 
    chart1.ChartAreas["chart"].AxisX.Interval = 1; 

    chart1.ChartAreas["chart"].AxisY.Minimum = 0; 
    chart1.ChartAreas["chart"].AxisY.Maximum = 100; 
    chart1.ChartAreas["chart"].AxisY.Interval = 5; 

    chart1.Series.Add("xxx"); 
    chart1.Series.Add("yyy"); 

    chart1.Series["xxx"].Color = Color.Black; 
    chart1.Series["yyy"].Color = Color.Red; 

    chart1.Series["xxx"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 
    chart1.Series["yyy"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; 

    chart1.Series["xxx"].Points.AddXY(comboBox1.Text, comboBox4.Text); 
    chart1.Series["yyy"].Points.AddXY(comboBox1.Text, comboBox4.Text); 

    chart1.Series["xxx"].Points.AddXY(comboBox2.Text, comboBox5.Text); 
    chart1.Series["yyy"].Points.AddXY(comboBox1.Text, comboBox4.Text); 

    chart1.Series["xxx"].Points.AddXY(comboBox3.Text, comboBox6.Text); 
    chart1.Series["yyy"].Points.AddXY(comboBox1.Text, comboBox4.Text); 
} 

Upvotes: 5

Related Questions