创建更新arraylist的图表

时间:2017-09-21 07:59:00

标签: c# arraylist charts

我正在尝试创建一个图表,其中x轴为时间,y轴为arraylist中的值。这些值每10秒更新一次。

我在C#中绘制图表是全新的。

到目前为止我的代码:

此方法仅用于创建图表一次。

private void createChart()
    {
        chart.Size = new Size(600, 400);
        chart.Location = new Point(100, 100);
        chart.BackColor = Color.Gray;
        chart.Series.Add("Values");

        var chartArea = new ChartArea();
        chartArea.AxisX.LabelStyle.Format = "hh:mm";
        chartArea.AxisX.MajorGrid.LineColor = Color.LightGray;
        chartArea.AxisY.MajorGrid.LineColor = Color.LightGray;
        chartArea.AxisX.LabelStyle.Font = new Font("Consolas", 8);
        chartArea.AxisY.LabelStyle.Font = new Font("Consolas", 8);
        chart.ChartAreas.Add(chartArea);

        var series = new Series();
        series.Name = "Series1";
        series.ChartType = SeriesChartType.FastLine;
        series.XValueType = ChartValueType.DateTime;
        chart.Series.Add(series);

        tabpage3.Controls.Add(chart);
    }

此方法用于更新图表:

arraylist arraylistMonitor可以包含两种类型的对象; chartObjectsInt和chartObjectsReal。这个arraylist使用timer_tick每隔10秒就会充满更多这些对象。如果可能的话,我想只获得arraylist arraylistMonitor中的最后10-20个对象。

private void updateChart()
    {
        //Create datetime
        string time = DateTime.Now.ToString("HH:mm").ToString();

        foreach (ChartObjectsInt chartRecords in arraylistMonitor)
        {
            if (chartRecords.getDataType() == "Int")
            {
                // bind the datapoints
                chart.Series["Series1"].Points.DataBindXY(time, chartRecords.getIntValue());
            }
        }

        foreach (ChartObjectsReal chartRecordsReal in arraylistMonitor)
        {
            if (chartRecordsReal.getDataType() == "Real")
            {
                // bind the datapoints
                chart.Series["Series1"].Points.DataBindXY(time, chartRecordsReal.getRealValue());
            }
        }

        // draw!
        chart.Invalidate();
    }

此刻我也遇到此代码的错误,请参阅image:

Error

我如何正确地完成这项工作?

感谢。

0 个答案:

没有答案