.NET实时数据图表

时间:2016-04-03 08:53:28

标签: c# asp.net .net winforms infragistics

我想制作一个实时数据图表,显示asp.net或winForms中的最后10分钟。

This is the image that i want to make it

我添加了系列但无法添加数据点。我搜索了很多,但我失败了。

顺便说一句,我使用了infragistics。

下面的代码生成随机数,并在图表中显示该数字。它有效,但只是i can see it.不能持续10分钟的最后一个数字。

    private void Form1_Load(object sender, EventArgs e)
    { 
        Timer timer = new Timer();
        timer.Interval = (1 * 1000); // 1 secs
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();
    }

    private void timer_Tick(object sender, EventArgs e)
    {
        Random r = new Random();
        int rnd=r.Next(1, 150);
        DataTable dt = new DataTable();

        dt.Columns.Add("Value", typeof(int));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Rows.Add(rnd, DateTime.ParseExact(DateTime.Now.ToLongTimeString(), "HH:mm:ss", null));

        NumericTimeSeries series = new NumericTimeSeries();      
        series.DataBind(dt, "Date", "Value");
        NumericTimeDataPoint ndp1 = new NumericTimeDataPoint(DateTime.Now, rnd, "ilk", false);
        NumericTimeDataPoint ndp2 = new NumericTimeDataPoint(DateTime.Now, 5.0, "iki", false);
        series.Points.Add(ndp1);
        series.Points.Add(ndp2);
        ultraChart2.Data.SwapRowsAndColumns = true;
        ultraChart2.DataSource = dt;
    }

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,

在每个刻度线上,您替换您的数据而不是添加数据。

尝试在 Form1_Load 处理程序中初始化一次系列,并在每个tick上添加新值,而不创建新的DataTable,将其重新绑定到系列等等。

为了清楚起见,

您的 timer_Tick 处理程序应该只有4行代码:

private void timer_Tick(object sender, EventArgs e)
{
    NumericTimeDataPoint ndp1 = new NumericTimeDataPoint(DateTime.Now, rnd, "ilk", false);
    NumericTimeDataPoint ndp2 = new NumericTimeDataPoint(DateTime.Now, 5.0, "iki", false);
    _series.Points.Add(ndp1);
    _series.Points.Add(ndp2);
}

将_series声明为私有成员,从 Form1_Load 处理程序初始化它,你应该好好去。