图表控制:清除和重新添加Y值后设计混乱

时间:2014-07-27 04:21:38

标签: c# winforms visual-studio-2010 charts asp.net-charts

整天都在努力解决这个问题。我在图表上有三个系列,看起来像这样。注意:我正在使用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。

enter image description here

然后我有一个重新开始的按钮,它将用户带回输入区域,然后我使用此代码清除重新点击的系列值。

        chart1.Series["totalsaving"].Points.Clear();
        chart1.Series["green"].Points.Clear();
        chart1.Series["blue"].Points.Clear();

如上所述使用相同的计算点击来计算和填充系列数据。问题是当我清除它们之后单击计算按钮来计算值时,总节省量和绿色都会丢失。只显示蓝色。

我是否在尝试清除值的方式出错,以便重新计算?

1 个答案:

答案 0 :(得分:1)

好的,从编辑,评论,我们的聊天和joim.me会话中积累了足够的数据来回答这个问题。

  • 您通过在设计器中的蓝色系列中添加额外数据点来扭曲显示。
  • 此点占用插槽1,但由于其值= 0,因此保持不可见。
  • 这会将系列中的下一个点推到插槽2
  • 清除积分后它就消失了,显示屏不再有效了。
  • 两列的消失可能是由硬编码宽度引起的。

您可以使用以下几种途径:

  • 在添加实际数据之前重新创建值= 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中。