2012-06-17 5 views
0

내가 가진 6 개의 콤보 상자에서 얻을 수있는 데이터로 차트를 만들어야합니다.C를 사용하여 차트를 만드는 방법 #

콤보 박스의 데이터는 숫자입니다. 콤보 상자에서 원하는 숫자를 선택하면이 값을 기반으로 차트를 만드는 버튼을 누릅니다.

내 문제는 내가 한 번만 할 수 있다는 것입니다. 콤보 박스의 값을 변경하고 버튼을 다시 클릭하면 예외가 발생합니다.

버튼을 누를 때마다 새 차트의 인스턴스를 만들어야한다는 것을 알고 있지만 어떻게해야할지 모르겠다.

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

어떤 예외를? – ChrisF

+1

@ChrisF :'chart1.CharAreas.Add ("chart"); 행에 기반한 중복 키 예외 가능성이 높습니다. – NotMe

답변

5

는 그래서 같은 것 (! 나는 그것이 무엇인지 먹으 렴 가정) 차트의 새로운 인스턴스에 chart1을 설정해보십시오 :

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

이 방법이 도움이 되었습니까? –

관련 문제