简体   繁体   中英

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);
}

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); 
} 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM