c# - mscharts 在 Red Cross 中设置 Xaxis 最大结果

标签 c# mschart

我在 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;

一切正常。

最佳答案

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

chart1.DataBind();

将数据绑定(bind)到您的图表,如果您在绑定(bind)后添加一个点,则必须重新计算轴:

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

关于c# - mscharts 在 Red Cross 中设置 Xaxis 最大结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190347/

相关文章:

javascript - Kendo Grid C# - 再次选择当前页面而不刷新数据源

c# - 在异步 Controller 中使用同步操作

c# - 检测放大/缩小滚动查看器 uwp

c# - 从数据库检索数据并将这些值插入到数据库中的另一个表中 C#

c# - MSChart X 和 Y 轴标签在原点重叠

vb.net - 如何在mschart中设置标签大小?

c# - Mschart 从数据库中获取多个系列

asp.net - MVC 升级后如何修复 Chartimg.axd

c# - 暂停/恢复异步任务的模式?

c# - MSChart:折线图 UI 看起来不正确