如何访问图表以在c#中添加数据点

时间:2014-07-31 13:57:21

标签: c# winforms

我正在尝试编写一个类来更新图表数据。我通过Windows窗体创建了图表,它自动生成了Form1.cs和Form1.Designer.cs中的代码

以下是我认为Form1.designer.cs的相关部分:

private void InitializeComponent()
{
    System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
    System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
    System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint1 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 2D);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint2 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 3D);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint3 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 2D);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint4 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 25D);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint5 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 2D);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint6 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 3D);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint7 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 0D);
    this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
    this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart();
    this.tableLayoutPanel1.SuspendLayout();
    ((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit();
    this.SuspendLayout();

我编写了另一个名为UpdateGraph.cs的类,它有一个向图中添加额外点的方法

namespace DataLogger
{
    class UpdateGraph
    {
        public void addGraphPoints()
        {
            chart1.Series.Points.AddXY(0, 10);   
        }
    }
}

问题是我收到错误消息

  

名称chart1在当前上下文中不存在

所以,如果有人能解释我如何访问图表来修改数据(或者我应该引用的内容),我会非常感激,因为我现在有点难过。

2 个答案:

答案 0 :(得分:0)

你可以尝试这个:

using System.Windows.Forms.DataVisualization.Charting;

class UpdateGraph
{
    public Chart Chart1 { get; set; }

    public UpdateGRaph(Chart chart)
    {
        Chart1 = chart;
    }

    public void AddGraphPoints()
    {
        Chart1.Series.Points.AddXY(0, 10);

    }
}

答案 1 :(得分:0)

Forms Designer将在InitializeComponent()中创建一个本地图表 - 也许有一种方法可以阻止它,但我还没有找到它。   诀窍是让图表脱离控制层次结构。例如,我在Designer.cs中的图表被添加到grpStuff:

this.grpStuff.Controls.Add(chrtStuff);

及其名称也可以在Designer.cs中找到:

chrtStuff.Name = "chartName";

所以 - 在我的代码中,我找到了图表:

chrt = (System.Windows.Forms.DataVisualization.Charting.Chart)grpStuff.Controls("chartName");