C#實(shí)現(xiàn)chart控件動(dòng)態(tài)曲線繪制
本文實(shí)例為大家分享了C#實(shí)現(xiàn)chart控件動(dòng)態(tài)曲線繪制的具體代碼,供大家參考,具體內(nèi)容如下
思想
實(shí)驗(yàn)室要做一個(gè)動(dòng)態(tài)曲線繪制,網(wǎng)上方法很多,但是缺乏完整代碼和效果圖的整合,往往總是缺少其一,因此整理如下,方便大家編程,節(jié)約時(shí)間。
思路:新建一個(gè)隊(duì)列,利用timer控件,動(dòng)態(tài)的往隊(duì)列中加入數(shù)據(jù),每次觸發(fā)事件,就相當(dāng)于將隊(duì)列中的值全部重新畫一遍。
我的目的是做四個(gè)點(diǎn)的動(dòng)態(tài)監(jiān)測(cè),所以代碼重復(fù)了四次,其實(shí)應(yīng)該用4個(gè)線程來做,思路就顯得較為清晰了,這也是可以改進(jìn)的地方。
public partial class 界面_Xtratabcontrol版本_ : Form ? ? { ? ? ? ? private Queue<double> dataQueue1 = new Queue<double>(100); //30個(gè)就清空一次 ? ? ? ? private Queue<double> dataQueue2 = new Queue<double>(100); //30個(gè)就清空一次 ? ? ? ? private Queue<double> dataQueue3 = new Queue<double>(100); //30個(gè)就清空一次 ? ? ? ? private Queue<double> dataQueue4 = new Queue<double>(100); //30個(gè)就清空一次 ? ? ? ? private int stress1 = 0;//設(shè)置一個(gè)壓力值全局變量 ? ? ? ? private int stress2 = 0;//設(shè)置一個(gè)壓力值全局變量 ? ? ? ? private int stress3 = 0;//設(shè)置一個(gè)壓力值全局變量 ? ? ? ? private int stress4 = 0;//設(shè)置一個(gè)壓力值全局變量 ? ? ? ? string monthNow = ""; ? ? ? ? string monthNext = ""; ? ? ? ? string currentTime = ""; ? ? ? ? bool isRefresh = false; ? ? ? ? public 界面_Xtratabcontrol版本_() ? ? ? ? { ? ? ? ? ? ? InitializeComponent(); ? ? ? ? ? ? dataGridView1.AutoGenerateColumns = false; //設(shè)置不自動(dòng)顯示數(shù)據(jù)庫(kù)中未綁定的列 ? ? ? ? ? ? //設(shè)置隔行背景色 ? ? ? ? ? ? this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque; ? ? ? ? ? ? this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige; ? ? ? ? } ? ? ? ? private void btnInit_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? InitChart1(); ? ? ? ? ? ? InitChart2(); ? ? ? ? ? ? InitChart3(); ? ? ? ? ? ? InitChart4(); ? ? ? ? } ? ? ? ? private void btnStart_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? this.timer1.Start(); ? ? ? ? } ? ? ? ? private void btnStop_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? this.timer1.Stop(); ? ? ? ? } ? ? ? ? private void timer1_Tick(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? UpdateDate(); //根據(jù)當(dāng)前時(shí)間取下一個(gè)數(shù)據(jù),同時(shí)給month賦值 ? ? ? ? ? ? ? ? dataQueue1.Enqueue(stress1); //就是這,不斷往里面加數(shù)據(jù)。 ? ? ? ? ? ? ? ? dataQueue2.Enqueue(stress2); ? ? ? ? ? ? ? ? dataQueue3.Enqueue(stress3); ? ? ? ? ? ? ? ? dataQueue4.Enqueue(stress4); ? ? ? ? ? ? ? ? if (isRefresh) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? //刷新界面 ? ? ? ? ? ? ? ? ? ? isRefresh = false; ? ? ? ? ? ? ? ? ? ? InitChart1(); ? ? ? ? ? ? ? ? ? ? InitChart2(); ? ? ? ? ? ? ? ? ? ? InitChart3(); ? ? ? ? ? ? ? ? ? ? InitChart4(); ? ? ? ? ? ? ? ? ? ? dataQueue1.Enqueue(stress1); ? ? ? ? ? ? ? ? ? ? dataQueue2.Enqueue(stress2); ? ? ? ? ? ? ? ? ? ? dataQueue3.Enqueue(stress3); ? ? ? ? ? ? ? ? ? ? dataQueue4.Enqueue(stress4); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? this.chart1.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? this.chart2.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? this.chart3.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? this.chart4.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? for (int i = 0; i < dataQueue1.Count; i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart1.Series[0].Points.AddXY((i + 1), dataQueue1.ElementAt(i)); 相當(dāng)于每次都是重新畫一遍 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? for (int i = 0; i < dataQueue2.Count; i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart2.Series[0].Points.AddXY((i + 1), dataQueue2.ElementAt(i)); 相當(dāng)于每次都是重新畫一遍 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? for (int i = 0; i < dataQueue3.Count; i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart3.Series[0].Points.AddXY((i + 1), dataQueue3.ElementAt(i)); 相當(dāng)于每次都是重新畫一遍 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? for (int i = 0; i < dataQueue4.Count; i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart4.Series[0].Points.AddXY((i + 1), dataQueue4.ElementAt(i)); 相當(dāng)于每次都是重新畫一遍 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MessageBox.Show(ex.Message); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? private void InitChart1() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //定義圖表區(qū)域 ? ? ? ? ? ? ? ? this.chart1.ChartAreas.Clear(); ? ? ? ? ? ? ? ? ChartArea chartArea1 = new ChartArea("C1"); ? ? ? ? ? ? ? ? this.chart1.ChartAreas.Add(chartArea1); ? ? ? ? ? ? ? ? //this.chart1.Dock = DockStyle.Fill; ? ? ? ? ? ? ? ? //定義存儲(chǔ)和顯示點(diǎn)的容器 ? ? ? ? ? ? ? ? this.chart1.Series.Clear(); ? ? ? ? ? ? ? ? Series series1 = new Series("S1"); ? ? ? ? ? ? ? ? series1.ChartArea = "C1"; ? ? ? ? ? ? ? ? this.chart1.Series.Add(series1); ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisY.Minimum = 30000; ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisY.Maximum = 50000; ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisX.Minimum = 1; ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisX.Maximum = 31; ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisX.Interval = 1; ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? this.chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? //設(shè)置標(biāo)題 ? ? ? ? ? ? ? ? this.chart1.Titles.Clear(); ? ? ? ? ? ? ? ? this.chart1.Titles.Add("S01"); ? ? ? ? ? ? ? ? this.chart1.Titles[0].Text = "1號(hào)監(jiān)測(cè)點(diǎn)"; ? ? ? ? ? ? ? ? this.chart1.Titles[0].ForeColor = Color.RoyalBlue; ? ? ? ? ? ? ? ? this.chart1.Titles[0].Font = new System.Drawing.Font("Microsoft Sans Serif", 12F); ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart1.Series[0].Color = Color.Red; ? ? ? ? ? ? ? ? if (rb1.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? //this.chart1.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart1.Titles[0].Text = string.Format("1號(hào)監(jiān)測(cè)點(diǎn)"); ? ? ? ? ? ? ? ? ? ? this.chart1.Series[0].ChartType = SeriesChartType.Line; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if (rb2.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart1.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart1.Series[0].ChartType = SeriesChartType.Spline; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? this.chart1.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? //DBEngine.ConnectDB("orcl", "dt", "6312"); ? ? ? ? ? ? ? ? dataQueue1.Clear();//清空隊(duì)列中所有數(shù)據(jù) ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? private void InitChart2() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //定義圖表區(qū)域 ? ? ? ? ? ? ? ? this.chart2.ChartAreas.Clear(); ? ? ? ? ? ? ? ? ChartArea chartArea2 = new ChartArea("C2"); ? ? ? ? ? ? ? ? this.chart2.ChartAreas.Add(chartArea2); ? ? ? ? ? ? ? ? //this.chart1.Dock = DockStyle.Fill; ? ? ? ? ? ? ? ? //定義存儲(chǔ)和顯示點(diǎn)的容器 ? ? ? ? ? ? ? ? this.chart2.Series.Clear(); ? ? ? ? ? ? ? ? Series series2 = new Series("S2"); ? ? ? ? ? ? ? ? series2.ChartArea = "C2"; ? ? ? ? ? ? ? ? this.chart2.Series.Add(series2); ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisY.Minimum = 30000; ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisY.Maximum = 50000; ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisX.Minimum = 1; ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisX.Maximum = 31; ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisX.Interval = 1; ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? this.chart2.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? //設(shè)置標(biāo)題 ? ? ? ? ? ? ? ? this.chart2.Titles.Clear(); ? ? ? ? ? ? ? ? this.chart2.Titles.Add("S02"); ? ? ? ? ? ? ? ? this.chart2.Titles[0].Text = "動(dòng)態(tài)折線圖顯示"; ? ? ? ? ? ? ? ? this.chart2.Titles[0].ForeColor = Color.RoyalBlue; ? ? ? ? ? ? ? ? this.chart2.Titles[0].Font = new System.Drawing.Font("Microsoft Sans Serif", 12F); //標(biāo)題字體 ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart2.Series[0].Color = Color.Red; ? ? ? ? ? ? ? ? if (rb1.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? //this.chart2.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart2.Titles[0].Text = string.Format("2號(hào)監(jiān)測(cè)點(diǎn)"); ? ? ? ? ? ? ? ? ? ? this.chart2.Series[0].ChartType = SeriesChartType.Line; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if (rb2.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart2.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart2.Series[0].ChartType = SeriesChartType.Spline; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? this.chart2.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? //DBEngine.ConnectDB("orcl", "dt", "6312"); ? ? ? ? ? ? ? ? dataQueue2.Clear();//清空隊(duì)列中所有數(shù)據(jù) ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? private void InitChart3() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //定義圖表區(qū)域 ? ? ? ? ? ? ? ? this.chart3.ChartAreas.Clear(); ? ? ? ? ? ? ? ? ChartArea chartArea3 = new ChartArea("C3"); ? ? ? ? ? ? ? ? this.chart3.ChartAreas.Add(chartArea3); ? ? ? ? ? ? ? ? //this.chart1.Dock = DockStyle.Fill; ? ? ? ? ? ? ? ? //定義存儲(chǔ)和顯示點(diǎn)的容器 ? ? ? ? ? ? ? ? this.chart3.Series.Clear(); ? ? ? ? ? ? ? ? Series series3 = new Series("S3"); ? ? ? ? ? ? ? ? series3.ChartArea = "C3"; ? ? ? ? ? ? ? ? this.chart3.Series.Add(series3); ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisY.Minimum = 30000; ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisY.Maximum = 50000; ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisX.Minimum = 1; ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisX.Maximum = 31; ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisX.Interval = 1; ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? this.chart3.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? //設(shè)置標(biāo)題 ? ? ? ? ? ? ? ? this.chart3.Titles.Clear(); ? ? ? ? ? ? ? ? this.chart3.Titles.Add("S03"); ? ? ? ? ? ? ? ? this.chart3.Titles[0].Text = "動(dòng)態(tài)折線圖顯示"; ? ? ? ? ? ? ? ? this.chart3.Titles[0].ForeColor = Color.RoyalBlue; ? ? ? ? ? ? ? ? this.chart3.Titles[0].Font = new System.Drawing.Font("Microsoft Sans Serif", 12F); //標(biāo)題字體 ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart3.Series[0].Color = Color.Red; ? ? ? ? ? ? ? ? if (rb1.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? //this.chart3.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart3.Titles[0].Text = string.Format("3號(hào)監(jiān)測(cè)點(diǎn)"); ? ? ? ? ? ? ? ? ? ? this.chart3.Series[0].ChartType = SeriesChartType.Line; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if (rb2.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart3.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart3.Series[0].ChartType = SeriesChartType.Spline; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? this.chart3.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? //DBEngine.ConnectDB("orcl", "dt", "6312"); ? ? ? ? ? ? ? ? dataQueue3.Clear();//清空隊(duì)列中所有數(shù)據(jù) ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? private void InitChart4() ? ? ? ? { ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //定義圖表區(qū)域 ? ? ? ? ? ? ? ? this.chart4.ChartAreas.Clear(); ? ? ? ? ? ? ? ? ChartArea chartArea4 = new ChartArea("C4"); ? ? ? ? ? ? ? ? this.chart4.ChartAreas.Add(chartArea4); ? ? ? ? ? ? ? ? //this.chart1.Dock = DockStyle.Fill; ? ? ? ? ? ? ? ? //定義存儲(chǔ)和顯示點(diǎn)的容器 ? ? ? ? ? ? ? ? this.chart4.Series.Clear(); ? ? ? ? ? ? ? ? Series series4 = new Series("S4"); ? ? ? ? ? ? ? ? series4.ChartArea = "C4"; ? ? ? ? ? ? ? ? this.chart4.Series.Add(series4); ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisY.Minimum = 30000; ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisY.Maximum = 50000; ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisX.Minimum = 1; ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisX.Maximum = 31; ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisX.Interval = 1; ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? this.chart4.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Silver; ? ? ? ? ? ? ? ? //設(shè)置標(biāo)題 ? ? ? ? ? ? ? ? this.chart4.Titles.Clear(); ? ? ? ? ? ? ? ? this.chart4.Titles.Add("S04"); ? ? ? ? ? ? ? ? this.chart4.Titles[0].Text = "動(dòng)態(tài)折線圖顯示"; ? ? ? ? ? ? ? ? this.chart4.Titles[0].ForeColor = Color.RoyalBlue; ? ? ? ? ? ? ? ? this.chart4.Titles[0].Font = new System.Drawing.Font("Microsoft Sans Serif", 12F); //標(biāo)題字體 ? ? ? ? ? ? ? ? //設(shè)置圖表顯示樣式 ? ? ? ? ? ? ? ? this.chart4.Series[0].Color = Color.Red; ? ? ? ? ? ? ? ? if (rb1.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? //this.chart4.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart4.Titles[0].Text = string.Format("4號(hào)監(jiān)測(cè)點(diǎn)"); ? ? ? ? ? ? ? ? ? ? this.chart4.Series[0].ChartType = SeriesChartType.Line; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if (rb2.Checked) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? this.chart4.Titles[0].Text = string.Format("動(dòng)態(tài) {0} 顯示", rb1.Text); ? ? ? ? ? ? ? ? ? ? this.chart4.Series[0].ChartType = SeriesChartType.Spline; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? this.chart4.Series[0].Points.Clear(); ? ? ? ? ? ? ? ? //DBEngine.ConnectDB("orcl", "dt", "6312"); ? ? ? ? ? ? ? ? dataQueue4.Clear();//清空隊(duì)列中所有數(shù)據(jù) ? ? ? ? ? ? } ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? { ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? private void UpdateDate() ? ? ? ? { ? ? ? ? ? ? //1 2 3 4號(hào)點(diǎn)同時(shí)更新 ? ? ? ? ? ? try ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //獲取當(dāng)前時(shí)間的batch值,將batch+1的時(shí)間值提取顯示。 ? ? ? ? ? ? ? ? string selectsql = string.Format("select * from stressinfo where operatetime=to_date('{0}','yyyy-mm-dd')", dtp1.Value.ToShortDateString()); ? ? ? ? ? ? ? ? DataTable dtDate = new DataTable(); ? ? ? ? ? ? ? ? dtDate = DBEngine.GetDataTableBySql(selectsql); ? ? ? ? ? ? ? ? if (dtDate.Rows.Count > 0) //4條 ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? string[] getmonthNow = dtp1.Value.ToShortDateString().Split('/'); //有的電腦是'-' ? ? ? ? ? ? ? ? ? ? monthNow = getmonthNow[1]; ? ? ? ? ? ? ? ? ? ? int currentBatch = DBEngine.ObjToInt(dtDate.Rows[0]["batchnum"]); ? ? ? ? ? ? ? ? ? ? //int currentNode = DBEngine.ObjToInt(dtDate.Rows[0]["NODE"]); //當(dāng)前節(jié)點(diǎn)和當(dāng)前批次確定唯一記錄 ? ? ? ? ? ? ? ? ? ? currentBatch++; ? ? ? ? ? ? ? ? ? ? //獲取下一個(gè)顯示的時(shí)間值以及應(yīng)力值 ? ? ? ? ? ? ? ? ? ? string nextsql1 = string.Format("select * from stressinfo where batchnum='{0}' and node=1", currentBatch); ? ? ? ? ? ? ? ? ? ? DataTable dtNext1 = new DataTable(); ? ? ? ? ? ? ? ? ? ? dtNext1 = DBEngine.GetDataTableBySql(nextsql1);//取得了下一個(gè)批次的所有應(yīng)力監(jiān)測(cè)點(diǎn)數(shù)據(jù)。 ? ? ? ? ? ? ? ? ? ? if (dtNext1.Rows.Count > 0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? stress1 = DBEngine.ObjToInt(dtNext1.Rows[0]["CURRENTSTRESS"]); ? ? ? ? ? ? ? ? ? ? ? ? dtp1.Value = DBEngine.ObjToDateTime(dtNext1.Rows[0]["OPERATETIME"]); //日期顯示(之后應(yīng)該還有各點(diǎn)應(yīng)力的提?。? ? ? ? ? ? ? ? ? ? ? ? ? currentTime = dtp1.Value.ToShortDateString(); ? ? ? ? ? ? ? ? ? ? ? ? string[] datetime = currentTime.Split('/'); ? ? ? ? ? ? ? ? ? ? ? ? monthNext = datetime[1]; ? ? ? ? ? ? ? ? ? ? ? ? if (monthNow != monthNext) ? ? ? ? ? ? ? ? ? ? ? ? ? ? isRefresh = true; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? timer1.Stop();//數(shù)據(jù)到頭了,沒有數(shù)據(jù)了,batch+1找不到了 ? ? ? ? ? ? ? ? ? ? ? ? btnStop.Focus(); //停止鍵焦點(diǎn)顯示 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ///第二個(gè)點(diǎn),不用更新數(shù)據(jù) ? ? ? ? ? ? ? ? ? ? string nextsql2 = string.Format("select * from stressinfo where batchnum='{0}' and node=2", currentBatch); ? ? ? ? ? ? ? ? ? ? DataTable dtNext2 = new DataTable(); ? ? ? ? ? ? ? ? ? ? dtNext2 = DBEngine.GetDataTableBySql(nextsql2);//取得了下一個(gè)批次的所有應(yīng)力監(jiān)測(cè)點(diǎn)數(shù)據(jù)。 ? ? ? ? ? ? ? ? ? ? if (dtNext2.Rows.Count > 0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? stress2 = DBEngine.ObjToInt(dtNext2.Rows[0]["CURRENTSTRESS"]); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? timer1.Stop();//數(shù)據(jù)到頭了,沒有數(shù)據(jù)了,batch+1找不到了 ? ? ? ? ? ? ? ? ? ? ? ? btnStop.Focus(); //停止鍵焦點(diǎn)顯示 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ///第三個(gè)點(diǎn),不用更新數(shù)據(jù) ? ? ? ? ? ? ? ? ? ? string nextsql3 = string.Format("select * from stressinfo where batchnum='{0}' and node=3", currentBatch); ? ? ? ? ? ? ? ? ? ? DataTable dtNext3 = new DataTable(); ? ? ? ? ? ? ? ? ? ? dtNext3 = DBEngine.GetDataTableBySql(nextsql3);//取得了下一個(gè)批次的所有應(yīng)力監(jiān)測(cè)點(diǎn)數(shù)據(jù)。 ? ? ? ? ? ? ? ? ? ? if (dtNext3.Rows.Count > 0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? stress3 = DBEngine.ObjToInt(dtNext3.Rows[0]["CURRENTSTRESS"]); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? timer1.Stop();//數(shù)據(jù)到頭了,沒有數(shù)據(jù)了,batch+1找不到了 ? ? ? ? ? ? ? ? ? ? ? ? btnStop.Focus(); //停止鍵焦點(diǎn)顯示 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ///第四個(gè)點(diǎn),不用更新數(shù)據(jù) ? ? ? ? ? ? ? ? ? ? string nextsql4 = string.Format("select * from stressinfo where batchnum='{0}' and node=4", currentBatch); ? ? ? ? ? ? ? ? ? ? DataTable dtNext4 = new DataTable(); ? ? ? ? ? ? ? ? ? ? dtNext4 = DBEngine.GetDataTableBySql(nextsql4);//取得了下一個(gè)批次的所有應(yīng)力監(jiān)測(cè)點(diǎn)數(shù)據(jù)。 ? ? ? ? ? ? ? ? ? ? if (dtNext4.Rows.Count > 0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? stress4 = DBEngine.ObjToInt(dtNext4.Rows[0]["CURRENTSTRESS"]); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? timer1.Stop();//數(shù)據(jù)到頭了,沒有數(shù)據(jù)了,batch+1找不到了 ? ? ? ? ? ? ? ? ? ? ? ? btnStop.Focus(); //停止鍵焦點(diǎn)顯示 ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? catch ? ? ? ? ? ? { ? ? ? ? ? ? } ? ? ? ? } }
因?yàn)樯婕暗揭恍I(yè)務(wù),有些代碼沒有粘,數(shù)據(jù)是和Oracle數(shù)據(jù)庫(kù)進(jìn)行交互的,類文件名DBEngine.cs,大家自己做的時(shí)候別忘連接數(shù)據(jù)庫(kù),最終效果圖
這個(gè)圖還有優(yōu)化的控件,我后期要做一下,還是不太好看。
可以實(shí)現(xiàn)曲線隨日期動(dòng)態(tài)增加,想到了就不難,我覺得思路挺好的,就記錄一下。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入了解c# 設(shè)計(jì)模式之簡(jiǎn)單工廠模式
這篇文章主要介紹了c# 設(shè)計(jì)模式之簡(jiǎn)單工廠模式的的相關(guān)資料,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06javascript函數(shù)中執(zhí)行c#函數(shù)的方法
這篇文章主要介紹了javascript和c#函數(shù)和變量互相調(diào)用的方法,大家參考使用吧2014-01-01C#實(shí)現(xiàn)的sqlserver操作類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的sqlserver操作類,結(jié)合具體實(shí)例形式分析了C#針對(duì)sqlserver數(shù)據(jù)庫(kù)進(jìn)行連接、查詢、更新、關(guān)閉等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06C#利用File方法對(duì)文件的操作總結(jié)(字節(jié)寫入和讀?。?/a>
使用C#語(yǔ)言中的File類我們能夠非常輕松的使用一些文件操作的函數(shù)來完成對(duì)文件簡(jiǎn)單的讀寫操作,這篇文章主要給大家介紹了光宇C#利用File方法對(duì)文件的操作的相關(guān)資料,包括字節(jié)寫入和讀取,需要的朋友可以參考下2021-08-08淺談C#在網(wǎng)絡(luò)波動(dòng)時(shí)防重復(fù)提交的方法
這篇文章主要介紹了淺談C#在網(wǎng)絡(luò)波動(dòng)時(shí)防重復(fù)提交的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04C# WinForm狀態(tài)欄實(shí)時(shí)顯示當(dāng)前時(shí)間(窗體狀態(tài)欄StatusStrip示例)
這篇文章主要介紹了C# WinForm狀態(tài)欄實(shí)時(shí)顯示當(dāng)前時(shí)間(窗體狀態(tài)欄StatusStrip示例),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01asp.net實(shí)現(xiàn)遍歷Request的信息操作示例
這篇文章主要介紹了asp.net實(shí)現(xiàn)遍歷Request的信息操作,涉及asp.net針對(duì)請(qǐng)求信息相關(guān)操作打印操作技巧,需要的朋友可以參考下2020-03-03