提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、版本一(DataGridView 和 Chart)
    • 1.小目标
    • 2.过程实现
    • 3.结果
  • 二、版本二(Combobox 和 Chart)
    • 1.小目标
    • 2.过程实现
    • 3.浅贴一下效果
  • 算是完结了吧 ,有问题一起交流鸭

一、版本一(DataGridView 和 Chart)

1.小目标

  1. 控件绑定Sql Sever 数据库

  2. DataGridView列出数据,Chart画折线

2.过程实现

  • chart的初始设置(个人习惯)

    • 1.图列关掉(属性>Legends>(Enabled)=False>确定)

    • 2.去网格X轴(属性>ChartAreas>Axes>X axis>MajorGrid>Enanled=False)

    • 3.去网格Y轴(X轴设置好,直接按Y(Value) axis>MajorGrid>Enanled=False>确定)

    • 4.柱状图变为折线(属性>Series>ChartType>Line>确定)

    • 5.铺满上半页面(属性>Dock>top)

  • DataGridView的初始设置(个人习惯)

    • 1.放左边方便查看数据(属性>Dock>Left)

    • 2.数据设置(编辑列,按图顺序添加列名和绑定数据,完成后确定)
      添加两个列名


数据绑定

  • 具体代码(在窗体加载事件里写)

1.创建SqlHelper类

 public static class SqlHelper{ public static DataTable GetData(string sql){DataTable dataTable = new DataTable();string connString = "Data Source=.;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = cmd;conn.Close();da.Fill(dataTable);return dataTable;}}

2.窗体代码

private void Form1_Load(object sender, EventArgs e){string Sql = "select numX,numY from BrokenLine30";//DataGridView绑定DataTable dt = SqlHelper.GetData(Sql);dataGridView1.DataSource = dt;//画图for(int i =0; i<dt.Rows.Count;i++){chart1.Series[0].Points.AddXY(i+1,dt.Rows[i][1]);}//设置Y轴范围(属性>ChartArea>Axes>Y(Value)axis>Maximum和Minimun里也能设置)chart1.ChartAreas[0].AxisY.Minimum = 27.5;chart1.ChartAreas[0].AxisY.Maximum = 31.5;//粗细(属性中也能设置)chart1.Series[0].BorderWidth = 3;}

3.结果

  • 读取到了数据库中的数据,显示在表格中

  • 下一步是画出折线

  • 做一下改善,将线变粗,设置了Y轴上下限
  • X轴还可以在属性中做更一步设置,让折线从1开始
  • 空白部分还能发挥空间,添加一些标签和文本,做些数据统计

二、版本二(Combobox 和 Chart)

1.小目标

  1. Combobox选择不同的值,Chart显示相对应的折线
  2. 在Chart中显示具体数据、Y轴上下限随数值变化,添加三条辅助线,分别代表数据中的最大值,最小值和标准值

2.过程实现

  • 界面设置
    与前一部分设置相同,主要是只想呈现X轴和Y轴
    combobox属性中(Name)改为cbbMidLine
    放一些标签和文本,分别改(Name)为textAvg,textMAX,textMIN,textCount

  • SqlHelper类
public static class SqlHelper{public static DataTable GetDataTable(string sql){DataTable dataTable = new DataTable();string connString = "Data Source=.;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = cmd;conn.Close();da.Fill(dataTable);return dataTable;}public static double Count(string sql){double result = 0;string connString = "Data Source=.;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();result = Convert.ToDouble(cmd.ExecuteScalar());return result;}}

  • Line类
public static  class Line{public static StripLine SetLine(string sql,out  double Line){string connString = "Data Source=DESKTOP-JQOODRR;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();Line= Convert.ToDouble(cmd.ExecuteScalar());conn .Close();StripLine stripLine = new StripLine();stripLine.Interval = 0;//偏移stripLine.IntervalOffset = Line;//刻度stripLine.StripWidth = 0.02;stripLine.BackColor =Color.DarkGreen;stripLine.Text = String.Format("{0:F}", Line);return stripLine;}public static StripLine DrawMid(double a){StripLine stripMid=new StripLine();stripMid.Interval = 0;//偏移stripMid.StripWidth = 0.03;stripMid.IntervalOffset = a;stripMid.BackColor = Color.Orange;stripMid.Text = string.Format("标准值:{0:F}",a);return stripMid;}}

  • 窗体代码
private void Form1_Load(object sender, EventArgs e){string sqlS = "select numX,numY from BrokenLine30";DataTable dt = SqlHelper.GetDataTable(sqlS);//dgvLine.DataSource = dt;//combobox数据绑定string sqlM = "select * from MidLLine";DataTable dtM = SqlHelper.GetDataTable(sqlM);cbbMidLine.DataSource = dtM;cbbMidLine.ValueMember = "MidLine";cbbMidLine.DisplayMember = "MidLine";}private void cbbMidLine_SelectedIndexChanged(object sender, EventArgs e){double Max,Min,Mid;StripLine stripMax , stripMin, stripMid;if (cbbMidLine.SelectedIndex == 0){string sqlA = "select AVG(numY) from BrokenLine10 ";string sqlMax = "select MAX(numY) from BrokenLine10";string sqlMin = "select MIN(numY) from BrokenLine10";string sqlCount = "select count(1) from BrokenLine10";stripMax = Line.SetLine(sqlMax,0.02,Color.DarkGreen,out Max);textMAX.Text = Max.ToString();stripMin= Line.SetLine(sqlMin,0.02,Color.DarkGreen,out Min);textMIN.Text = Min.ToString();stripMid=Line.SetLine(sqlA,0.03,Color.Orange,out Mid);texAvg.Text = Mid.ToString("0.00");double Count=SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 10);//展示文本stripMid.IntervalOffset = 10;string sqlS = "select numX,numY from BrokenLine10";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 1){string sqlA = "select AVG(numY) from BrokenLine20 ";string sqlMax = "select MAX(numY) from BrokenLine20";string sqlMin = "select MIN(numY) from BrokenLine20";string sqlCount = "select count(1) from BrokenLine20";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen,out Min);textMIN.Text = Min.ToString();stripMid=Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);    texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 20);stripMid.IntervalOffset = 20;string sqlS = "select numX,numY from BrokenLine20";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 2){string sqlA = "select AVG(numY) from BrokenLine30 ";string sqlMax = "select MAX(numY) from BrokenLine30";string sqlMin = "select MIN(numY) from BrokenLine30";string sqlCount = "select count(1) from BrokenLine30";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen, out Min);textMIN.Text = Min.ToString();stripMid = Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 30);stripMid.IntervalOffset = 30;string sqlS = "select numX,numY from BrokenLine30";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 3){string sqlA = "select AVG(numY) from BrokenLine40 ";string sqlMax = "select MAX(numY) from BrokenLine40";string sqlMin = "select MIN(numY) from BrokenLine40";string sqlCount = "select count(1) from BrokenLine40";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen, out Min);textMIN.Text = Min.ToString();stripMid = Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 40);//展示文本stripMid.IntervalOffset = 40;string sqlS = "select numX,numY from BrokenLine40";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 4){string sqlA = "select AVG(numY) from BrokenLine50 ";string sqlMax = "select MAX(numY) from BrokenLine50";string sqlMin = "select MIN(numY) from BrokenLine50";string sqlCount = "select count(1) from BrokenLine50";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen, out Min);textMIN.Text = Min.ToString();stripMid = Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 50);//展示文本stripMid.IntervalOffset = 50;string sqlS = "select numX,numY from BrokenLine50";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}}
  • 窗体Load事件是双击触发
  • combobox(在此项目中改名为cbbMidLine)的值改变事件是在属性里的事件里找到SelectedChanged再点击
  • 点击完的效果
  • 数据库的设计
  • 表的设计
    BrokenLine10–BrokenLine50,设计都是一样的此表放平均值

3.浅贴一下效果

  • 标准值为10
  • 20
  • 30

算是完结了吧 ,有问题一起交流鸭

C# chart画折线相关推荐

  1. 折线图_R语言画折线图?

    笔者邀请您,先思考: 1 折线图有什么作用?如何画折线图 折线图(Line chart)是将数据表示为一系列称为"标记"的数据点,数据点之间由线段连接而成.它是类似散点图,除了测量 ...

  2. python 折线图 excel_Python操作Excel,openpyxl模块,画折线图

    一.如图 30万数据,比较大,挤一起了 import sys import uuid import string import json import time import random impor ...

  3. java 折线动图_Java画折线图

    JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图.柱状图 ( 普通柱状图以及堆栈柱状图 ).线图.区域图.分 ...

  4. python画柱状图 画折线图

    # 画柱状图     plt.bar(x_labels, grid) 画折线图     """     for i in range(len(grid)-1):     ...

  5. python怎么做折线图_python怎么画折线图

    匿名用户 1级 2018-01-18 回答 一.环境准备 linux ubuntu 下需安装下面三个包: Numpy, Scipy,Matplotlib 分别输入下面的代码进行安装: [plain]  ...

  6. echarts入门基础,画折线图

    注意:一定要自己引入echarts库 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  7. python画折线图代码-用Python画论文折线图、曲线图?几个代码模板轻松搞定!

    前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...

  8. python画折线图代码-Python折线图的分析过程和画图的方法

    说起折线图,很多人都觉得非常简单,不就是一些点连成的线吗?用 Excel 几秒钟就能画出一张折线图. 真的就这么简单吗? 想一想:在普通的折线图中,如何自动地添加一条代表平均值的横线?如何添加一条带箭 ...

  9. python画折线图代码-python绘制简单折线图代码示例

    1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...

  10. python如何绘制折线图-python如何画折线图

    python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...

最新文章

  1. 解决pip install keras报错问题
  2. OpenCV用ArUco和ChArUco进行校准
  3. bean覆盖 springboot_Springboot配置加载覆盖值顺序
  4. Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
  5. 这款耳机堪比千元级的AirPods
  6. 【Pytorch】X.view(-1)操作
  7. ARM平板电脑移植Linux,iperf ARM移植
  8. android servlet乱码问题,初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)...
  9. 2. PSR-2 --- 代码风格指南
  10. 聪明贝塔(Smart Beta)
  11. 2021-09-08 集成学 习 思想概述
  12. 史上最全电脑优化小技巧
  13. Super odometry:以IMU为核心的激光雷达视觉惯性融合框架(ICRA2021)
  14. 2018-2019金融周期下的武汉楼市和政策解析
  15. 二进制除法原理——两种简便方法
  16. win11窗口桌面管理器突然很吃内存?
  17. 【算法学习笔记07】贪心算法(Greedy Algorithm)
  18. 百练2739:计算对数题解
  19. 什么是绩效点、奖励加分、处罚扣分
  20. 开源pdf读取_Wallabag可满足您的开源读取后应用程序需求

热门文章

  1. item_search_img - 按图搜索1688商品(拍立淘)
  2. trackmaker翻译_体育翻译滑雪中英对照翻译
  3. 开源漫画翻译神器! AI 自动清除、填补漫画文字!
  4. 使用mindspore过程中Using shared memory queue, but rowsize is larger than allocated
  5. 线上服务应急攻关方法论
  6. 项目5—中断控制LED下降沿有效与低电平触发
  7. Python办公自动化之Excel报表自动化,看这一篇就够了!
  8. 利用计算机制作多媒体最后一步,计算机多媒体技术在影视后期制作的运用
  9. 查看对方使用什么手机型号
  10. 通过温度湿度计算露点