整天都在努力解决这个问题。我在图表上有三个系列,看起来像这样。注意:我正在使用winforms控件。
根据输入的计算添加值。我正在使用此代码将值添加到每个系列中。
this.chart1.Series["green"].Points.AddY(greenvalue);
this.chart1.Series["totalsaving"].Points.AddY(totalsavingvalue);
this.chart1.Series["blue"].Points.AddY(bluevalue);
我设置的系列属性是这样的。绿色和总计都设置为StackedColumn,蓝色设置为Column for chart type。
然后我有一个重新开始的按钮,它将用户带回输入区域,然后我使用此代码清除重新点击的系列值。
chart1.Series["totalsaving"].Points.Clear();
chart1.Series["green"].Points.Clear();
chart1.Series["blue"].Points.Clear();
如上所述使用相同的计算点击来计算和填充系列数据。问题是当我清除它们之后单击计算按钮来计算值时,总节省量和绿色都会丢失。只显示蓝色。
我是否在尝试清除值的方式出错,以便重新计算?
答案 0 :(得分:1)
好的,从编辑,评论,我们的聊天和joim.me会话中积累了足够的数据来回答这个问题。
您可以使用以下几种途径:
在添加实际数据之前重新创建值= 0的额外点(不推荐)
不首先添加额外点,而是使用Points.AddXY而不是Points.AddY将每个点强制插入其插槽,其中X为插槽。
不清除点,而是使用SetValueY方法更新其值。在为所有三个数据点分配了新值后,您需要调用chart1.Invalidate()使其显示。
所有这些属性的最简单样式,其中一些属性深埋在属性字符串(!)中,您甚至可以决定添加并设计和优化设计器中的所有三个点并仅更新它们的y值,如下所示:
chart1.Series["green"].SetValueY(greenvalue);
chart1.Series["totalsaving"].SetValueY(totalsavingvalue);
chart1.Series["blue"].SetValueY(bluevalue);
chart1.Invalidate();
选择是你的,但无论如何我建议设置正确的X值,无论是在代码中还是在desginer中。