Winforms 如何在microsoft图表上以X轴标签显示日期
我在这里试图找出如何让我的图表,这是代码落后显示日期的点。我的点显示得非常好,但是每当我试图将x轴标签设置为数据库中的日期时,程序就会进行调整。有人能告诉我如何在代码中做到这一点吗Winforms 如何在microsoft图表上以X轴标签显示日期,winforms,.net-4.0,charts,controls,reporting,Winforms,.net 4.0,Charts,Controls,Reporting,我在这里试图找出如何让我的图表,这是代码落后显示日期的点。我的点显示得非常好,但是每当我试图将x轴标签设置为数据库中的日期时,程序就会进行调整。有人能告诉我如何在代码中做到这一点吗 using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.SqlServerCe; usin
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlServerCe;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace BgTracker.NET.Reports
{
public partial class BPChart : Form
{
private System.Windows.Forms.DataVisualization.Charting.Chart chart1;
public BPChart()
{
InitializeComponent();
}
private void BPChart_Load(object sender, EventArgs e)
{
chart1 = new Chart();
ChartArea chartArea1 = new ChartArea();
chart1.ChartAreas.Add(chartArea1);
chart1.ChartAreas["ChartArea1"].AxisX.Title = "Dates";
chart1.ChartAreas["ChartArea1"].AxisY.Title = "BP Rates";
Series series1 = new Series();
Series series2 = new Series();
Series series3 = new Series();
// Add data points to the first series
string ConnStr1 = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlCeConnection conn = new SqlCeConnection(ConnStr1);
string GetBPReadings = "SELECT Systolic, Diastolic, DateVal from Bp where DateVal BETWEEN '5/1/2000' AND '5/8/2000'";
SqlCeCommand cmd = new SqlCeCommand(GetBPReadings, conn);
conn.Open();
SqlCeDataReader rdrBP = cmd.ExecuteReader();
while (rdrBP.Read())
{
series1.Points.Add(Convert.ToInt32(rdrBP.GetValue(0).ToString()));
series2.Points.Add(Convert.ToInt32(rdrBP.GetValue(1).ToString()));
series3.AxisLabel = rdrBP.GetValue(2).ToString();
}
conn.Close();
chart1.Series.Add(series1);
chart1.Series.Add(series2);
chart1.Series["Series1"].ChartType = SeriesChartType.Line;
chart1.Series["Series2"].ChartType = SeriesChartType.Line;
chart1.Series["Series1"].Color = System.Drawing.Color.Red;
chart1.Series["Series2"].Color = System.Drawing.Color.Blue;
// Set chart control location
chart1.Location = new System.Drawing.Point(0, 0);
// Set Chart control size
chart1.Size = new System.Drawing.Size(800, 600);
// Add chart control to the form
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.chart1 } );
}
}
}
我终于弄明白我错过了什么。要显示数据库中的日期,必须将这些日期设置为序列中的点。为了帮助他人,以下是我使用的代码
private void BPChart_Load(object sender, EventArgs e)
{
chart1 = new Chart();
ChartArea chartArea1 = new ChartArea();
chart1.ChartAreas.Add(chartArea1);
chart1.ChartAreas["ChartArea1"].AxisX.Title = "Dates";
chart1.ChartAreas["ChartArea1"].AxisY.Title = "BP Rates";
Series series1 = new Series();
Series series2 = new Series();
chart1.Series.Add(series1);
chart1.Series.Add(series2);
// Add data points to the first series
int i = 0;
string ConnStr1 = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlCeConnection conn = new SqlCeConnection(ConnStr1);
string GetBPReadings = "SELECT Systolic, Diastolic, [Date] from Bp where [Date] BETWEEN '5/1/2000' AND '5/8/2000'";
SqlCeCommand cmd = new SqlCeCommand(GetBPReadings, conn);
conn.Open();
SqlCeDataReader rdrBP = cmd.ExecuteReader();
while (rdrBP.Read())
{
series1.Points.Add(Convert.ToInt32(rdrBP.GetValue(0).ToString()));
series2.Points.Add(Convert.ToInt32(rdrBP.GetValue(1).ToString()));
chart1.Series["Series1"].Points[i].AxisLabel = rdrBP.GetValue(2).ToString();
i++;
}
conn.Close();
chart1.Series["Series1"].ChartType = SeriesChartType.Line;
chart1.Series["Series2"].ChartType = SeriesChartType.Line;
chart1.Series["Series1"].Color = System.Drawing.Color.Red;
chart1.Series["Series2"].Color = System.Drawing.Color.Blue;
// Set chart control location
chart1.Location = new System.Drawing.Point(0, 0);
// Set Chart control size
chart1.Size = new System.Drawing.Size(800, 600);
// Add chart control to the form
this.Controls.AddRange(new System.Windows.Forms.Control[] { this.chart1 });
}
}
你能比“投球”更具体一点吗?你有例外吗?如果有挂起的话,是哪行代码导致的?我的意思是它完全忽略了我设置X轴标签的尝试。我认为将X轴设置为系列3就可以了,但没有骰子。所有轴标签显示为1 2 3 4,依此类推。