mscharts设置x轴最大结果在红十字

本文关键字:结果 红十字 设置 mscharts | 更新日期: 2023-09-27 18:01:53

我在MScharts控件中设置了多个系列。用这种方法,我想在它们之间切换。第一次调用这个方法时,一切正常,序列显示正确。第二次以及之后的每次方法调用都会导致在控件中绘制一个红十字。没有抛出异常

    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;

一切作品。

mscharts设置x轴最大结果在红十字

RecalculateAxesScale()解决你的问题,因为这一行:

chart1.DataBind();

将数据绑定到你的图形,如果你在绑定后添加一个点,你必须重新计算轴:

chart1.ChartAreas[0].RecalculateAxesScale();

所以更好的解决方法是:

    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();
        }
    }