【问题标题】:mscharts set Xaxis maximum results in Red Crossmscharts 在 Red Cross 中设置 Xaxis 最大结果
【发布时间】:2013-03-03 20:16: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;

一切正常。

【问题讨论】:

  • 你可以回答你自己的问题并标记它。

标签: c# mschart


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2011-12-22
    • 1970-01-01
    • 2017-03-18
    • 2022-07-18
    • 1970-01-01
    相关资源
    最近更新 更多