我想在asp.net或winForms中制作一个显示最后10分钟的实时数据图。
这是我想让它的图像
我添加了该系列,但无法添加数据点。我找了很多,但都没找到。
顺便说一下,我用的是基础理论。
下面的代码生成随机数,并在图表中显示该数字。它起作用,但只是我能看到的最后一个数字。不是持续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;
}
如果我正确理解你的问题,
在每次勾选时,您都替换您的数据,而不是添加到其中。
尝试在Form1_Load处理程序中初始化该系列一次,在每次勾选时,只向其添加新值,而不创建新的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处理程序对其进行初始化,然后就可以开始了。