Я пытаюсь создать непрерывно движущуюся диаграмму с помощью RemoveAt (0). Я не знаю, почему каждый раз, когда я запускаю код, я получаю это исключение. В нем говорилось: «Индекс вне допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции». и он был указан на this.chart1.Series ["Position"]. Points.RemoveAt (0); . Может ли кто-нибудь помочь мне исправить это? Ниже приведена часть кода, которую я использовал для рисования на графике.
private void timer2_Tick(object sender, EventArgs e)
{
time++;
Position = Convert.ToDouble(_epos.Operation.MotionInfo.GetPositionIs());
this.chart1.Series["Position"].Points.AddXY(time, Position);
this.chart1.Series["Position"].BorderWidth = 2;
if (time >= 50)
{
if (time == 500)
{
time = 50;
}
this.chart1.Series["Position"].Points.RemoveAt(0);
this.chart1.ResetAutoValues();
}
}
время и положение - глобальные переменные. время в int и Position в double.
Вы, вероятно, удаляете до того, как будут добавлены какие-либо точки. Проверьте количество очков и не удаляйте их, когда счетчик равен нулю. Время, вероятно, называется раньше и добавляются баллы.
Привет, спасибо за ваши быстрые ответы. Ваши ответы помогли мне разобраться. Я добавляю условное if при использовании RemoveAt. Я использую для этого chart1.Series.Count! = 0. Большое спасибо @jdweng
Спасибо за ответ. @mjwills
Спасибо за ответ, но до этого я прочитал вопрос, который вы упомянули, и, возможно, я немного не понимаю его, хе-хе, спасибо, кстати, @elgonzo
Когда возникает исключение, каково значение
this.chart1.Series["Position"].Points.Length
(или, возможно,Count()
, еслиLength
не работает)? Как вы думаете, что произойдет, если вы запуститеRemoveAt
, когда значениеLength
равно 0?