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