C# from 程序 chart图表问题
我在窗体上建立了一个chart图表,和一个按钮,按下按钮绑定X和Y值后,能显示我想要的柱状图。但是我再按一次,图表的x轴不会清零从窗体加载时的值出发,而是在前面的X值的基...
我在窗体上建立了一个chart图表,和一个按钮,按下按钮绑定X和Y值后,能显示我想要的柱状图。但是我再按一次,图表的x轴不会清零从窗体加载时的值出发,而是在前面的X值的基础上,继续新增X的值。导致X轴很密很密,请问,如何才能解决这个问题。就是无论你按多少次,图表都根据你绑定的X和Y的值,建立柱状图,会覆盖前面的图,而不是继续加在先前柱状图的后面。
展开
3个回答
展开全部
首先感谢给出满意回答的作者,本人用此技术解决了问题,现在我给出完整的办法,当然技术核心是满意回答的作者。
/// <summary>
/// 完整的图表
/// </summary>
/// <param name="chart">图表</param>
/// <param name="xValue">X数值</param>
/// <param name="yValue">Y数值</param>
/// <param name="bt">标题</param>
/// <param name="tlmc">图例名称</param>
/// <param name="xbt">X标题</param>
/// <param name="ybt">Y标题</param>
private void showChart(Chart chart, string[] xValue, double[] yValue,string bt,string tlmc,string xbt,string ybt)
{
chart.Series.Clear();
Title tl = new Title();
chart1.Titles.Clear();
tl.Text=bt;//标题
Series series = new Series();
series.ChartArea = "ChartArea1";
series.ChartType =SeriesChartType.Line;
series.CustomProperties = "DrawingStyle=LightToDark";
series.Legend = "Legend1";
series.Points.DataBindXY(xValue, yValue);
series.ToolTip = "#VAL";
series.LegendText = tlmc;
series.BorderWidth = 2;
series.IsValueShownAsLabel = true;
chart.ChartAreas["ChartArea1"].AxisX.Title = xbt;
chart.ChartAreas["ChartArea1"].AxisY.Title = ybt;
chart1.Titles.Add(tl);
chart.Series.Add(series);
}
/// <summary>
/// 完整的图表
/// </summary>
/// <param name="chart">图表</param>
/// <param name="xValue">X数值</param>
/// <param name="yValue">Y数值</param>
/// <param name="bt">标题</param>
/// <param name="tlmc">图例名称</param>
/// <param name="xbt">X标题</param>
/// <param name="ybt">Y标题</param>
private void showChart(Chart chart, string[] xValue, double[] yValue,string bt,string tlmc,string xbt,string ybt)
{
chart.Series.Clear();
Title tl = new Title();
chart1.Titles.Clear();
tl.Text=bt;//标题
Series series = new Series();
series.ChartArea = "ChartArea1";
series.ChartType =SeriesChartType.Line;
series.CustomProperties = "DrawingStyle=LightToDark";
series.Legend = "Legend1";
series.Points.DataBindXY(xValue, yValue);
series.ToolTip = "#VAL";
series.LegendText = tlmc;
series.BorderWidth = 2;
series.IsValueShownAsLabel = true;
chart.ChartAreas["ChartArea1"].AxisX.Title = xbt;
chart.ChartAreas["ChartArea1"].AxisY.Title = ybt;
chart1.Titles.Add(tl);
chart.Series.Add(series);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
绑定数据前先清除一下Series,再new一个就行了, 需要代码说下
更多追问追答
追问
需要代码,谢谢。
追答
//要显示的数据(随便弄的,根据你的需要改):
string[] xValue={" 一月 ", " 二月 ", " 三月 ", " 四月 ", " 五月 ", " 六月 "};
double[] yValue={100,232,234,432,234,984};
//显示图表的方法
private void showChart(Chart chart,string[] xValue,double[] yValue)
{
chart.Series.Clear();
Series series = new Series();
series.ChartArea = "ChartArea1";
series.CustomProperties = "DrawingStyle=LightToDark";
series.Legend = "Legend1";
series.Points.DataBindXY(xValue, yValue);
series.ToolTip = "#VAL";
chart.Series.Add(series);
}
调用此方法:
showChart(this.chart1,xValue,yValue);
注释不需要吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
绑定前
chtShow.Series.Clear();
chtShow.Series.Clear();
追问
此条语句好像是清除所有元素,使用这条语句后,图表就出不来了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询