Он не вычисляет максимальное значение до тех пор, пока не появится график, поэтому следующий код выводит NaN:
public Form1()
{
InitializeComponent();
this.chart1.Series.Clear();
this.chart1.Series.Add("My Data");
this.chart1.Series[0].Points.AddXY(1, 1);
this.chart1.Series[0].Points.AddXY(2, 2);
this.chart1.Series[0].Points.AddXY(3, 6);
MessageBox.Show(this.chart1.ChartAreas[0].AxisY.Maximum.ToString()); // returns NaN
}
Но проверка после того, как карта отображается даст правильное значение:
public Form1()
{
InitializeComponent();
this.chart1.Series.Clear();
this.chart1.Series.Add("My Data");
this.chart1.Series[0].Points.AddXY(1, 1);
this.chart1.Series[0].Points.AddXY(2, 2);
this.chart1.Series[0].Points.AddXY(3, 6);
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(this.chart1.ChartAreas[0].AxisY.Maximum.ToString()); // returns 8
}
В качестве альтернативы вы можете выполнить обновление сразу после того, как вы установили свои данные (но это не будет работать в конструкторе формы, потому что диаграмма еще не отображается):
private void button1_Click(object sender, EventArgs e)
{
this.chart1.Series.Clear();
this.chart1.Series.Add("My Data");
this.chart1.Series[0].Points.AddXY(1, 1);
this.chart1.Series[0].Points.AddXY(2, 2);
this.chart1.Series[0].Points.AddXY(3, 6);
this.chart1.Update();
MessageBox.Show(this.chart1.ChartAreas[0].AxisY.Maximum.ToString()); // returns 8
}
Вот еще один способ сделать это с помощью события OnShown формы и два ряда данных:
public Form1()
{
InitializeComponent();
this.chart1.Series.Clear();
this.chart1.Series.Add("My Data");
this.chart1.Series[0].Points.AddXY(1, 1);
this.chart1.Series[0].Points.AddXY(2, 2);
this.chart1.Series[0].Points.AddXY(3, 6);
this.chart1.Series.Add("My Data2");
this.chart1.Series[1].Points.AddXY(1, 1);
this.chart1.Series[1].Points.AddXY(2, 9);
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
this.chart1.Update();
MessageBox.Show(this.chart1.ChartAreas[0].AxisY.Maximum.ToString()); // returns 10
}
Я пробовал это с автомасштабированием. Если я не добавляю никаких точек данных, я получаю NaN, но если у меня есть какие-то точки данных в моей серии, я получаю правильное значение. Не могли бы вы добавить дополнительные сведения о том, как вы настраиваете свой контроль? –
Обновлено с дополнительной информацией о моем управлении диаграммой. Ваш метод все еще возвращает NaN для меня. – SRTie4k