2013-03-03 52 views
2

我在MScharts控件中设置了多个系列。 用这种方法我想在它们之间切换。 第一次,这种方法被称为,一切都很好,系列显示正确。 第二次,每次之后,方法调用都会在控件中绘制一个红色十字。不引发异常。mscharts设置Xaxis在红十字会中的最大结果

private void EnableChart(Series series) 
    { 
     if (series != null) 
     { 
      chart1.Series.Clear(); 
      chart1.Series.Add(series); 
      double maxval = series.Points.FindMaxByValue("X").XValue; 
      chart1.DataSource = series; 
      chart1.ChartAreas[0].AxisX.Title = series.Name; 
      chart1.DataBind(); 
      chart1.ChartAreas[0].AxisX.Maximum = maxval; //if commented out = ok 
     } 
    } 

如果我注释掉最后一行,图表显示上升,但与旧系列的X轴值,所以我不能看到任何数据。

编辑:已解决。

如果我用,而不是

chart1.ChartAreas[0].RecalculateAxesScale(); 

chart1.ChartAreas[0].AxisX.Maximum = maxval; 

一切正常。

+1

你可以回答你自己的问题,并将其标记。 – Drake 2014-03-04 08:57:47

回答

0

RecalculateAxesScale()解决您的问题,因为这条线:

chart1.ChartAreas[0].RecalculateAxesScale(); 

因此更好的办法:

chart1.DataBind(); 

数据绑定到你的图表,如果你结合你必须重新计算轴后加点解决这个问题:

private void EnableChart(Series series) 
    { 
     if (series != null) 
     { 
      chart1.Series.Clear(); 
      chart1.Series.Add(series); 
      double maxval = series.Points.FindMaxByValue("X").XValue; 
      chart1.DataSource = series; 
      chart1.ChartAreas[0].AxisX.Title = series.Name; 

      //switch latest lines and you haven't to recalculate axes 
      chart1.ChartAreas[0].AxisX.Maximum = maxval; 
      chart1.DataBind(); 
     } 
    }