c#我用chart读取数据库

qq_37622820 2017-11-10 02:40:28
c#我用chart读取数据库显示点,当点都读取完了怎么让他停止,等再插入数据的时候再重新显示
或者当数据库点读取完了让他Y变成0,等再插入数据的时候显示新点
我把X轴设成时间了,当数据库数据读完了,却变成这样了
正常应该像如下图片


下面是我写的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient; //需要添加的命名空间
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace 实时曲线
{
public partial class Form1 : Form
{

static int aaa = 0;

public Form1()
{
InitializeComponent();
InitChart();
}



private void InitChart()
{
DateTime time = DateTime.Now;
textBox1.Text = "开始时间:" + time.ToString();
Series series = chart1.Series[0];
series.ChartType = SeriesChartType.Spline;

this.chart1.ChartAreas[0].AxisY.Maximum = 10;
this.chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
this.chart1.ChartAreas[0].AxisX.ScaleView.Size = 5;
this.chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;
this.chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true;
this.chart1.Series[0].Color = Color.Red;


}

private void timer1_Tick(object sender, EventArgs e)
{
//this.chart1.Series[0].Points.Clear();
string con, sql;
con = "Server=.;Database=newListen;Trusted_Connection=SSPI";
SqlConnection mycon = new SqlConnection(con);
mycon.Open();
sql = "select * from receive_data";
SqlDataAdapter myda = new SqlDataAdapter(sql, con);
DataTable dt = new DataTable();
DataSet myds = new DataSet();
myda.Fill(dt);
myda.Fill(myds, "receive_data");

Series series = chart1.Series[0];

foreach (DataRow row in dt.Rows)
{

List<short> www = new List<short>();
short point = short.Parse(row["net1_receive_count"].ToString());
series.Points.AddXY(DateTime.Now, point);
www.Add(point);
aaa++;
if (aaa == www.Count)
{
textBox1.Text = aaa.ToString() + www.Count.ToString();
this.timer1.Stop();
}

}

this.chart1.ChartAreas[0].AxisX.ScaleView.Position = series.Points.Count - 6;

//throw new NotImplementedException();
}

private void chart1_Click(object sender, EventArgs e)
{

}

private void rb1_CheckedChanged(object sender, EventArgs e)
{
}

private void btnStart_Click(object sender, EventArgs e)
{
this.timer1.Start();
}

private void btnStop_Click(object sender, EventArgs e)
{
this.timer1.Stop();
}

}
}
...全文
908 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LUKESHUN 2019-04-13
  • 打赏
  • 举报
回复
net1_recieve_data代表什么意思啊?可不可以把数据库给我看一下啊?
Il Mare 2019-03-28
  • 打赏
  • 举报
回复
遇到相似的问题啊
qq_37622820 2017-11-10
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
[quote=引用 3 楼 qq_37622820 的回复:] [quote=引用 2 楼 duanzi_peng 的回复:] 当数据库点读取完了让他Y变成0, -》读取完毕之后再另加一条Y值为0的数据到点集合中。
我也想过,但是我的点都是在读取数据库循环遍历时候复制的,如果要加点怎么弄, 能给个具体代码么[/quote] 读取数据库的时候怎么添加的,就怎么添加。[/quote] foreach (DataRow row in dt.Rows) { short point = short.Parse(row["net1_receive_count"].ToString()); series.Points.AddXY(DateTime.Now, point); } 怎么加? 这是我读取数据库数据 放点的代码, 如何判定他读没读完啊
exception92 2017-11-10
  • 打赏
  • 举报
回复
引用 3 楼 qq_37622820 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 当数据库点读取完了让他Y变成0, -》读取完毕之后再另加一条Y值为0的数据到点集合中。
我也想过,但是我的点都是在读取数据库循环遍历时候复制的,如果要加点怎么弄, 能给个具体代码么[/quote] 读取数据库的时候怎么添加的,就怎么添加。
qq_37622820 2017-11-10
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
当数据库点读取完了让他Y变成0, -》读取完毕之后再另加一条Y值为0的数据到点集合中。
我也想过,但是我的点都是在读取数据库循环遍历时候复制的,如果要加点怎么弄, 能给个具体代码么
exception92 2017-11-10
  • 打赏
  • 举报
回复
当数据库点读取完了让他Y变成0, -》读取完毕之后再另加一条Y值为0的数据到点集合中。
qq_37622820 2017-11-10
  • 打赏
  • 举报
回复
大神们快教教小弟,也可以加我QQ 私聊我

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧