2016-10-28 4 views
0

Я хочу отобразить диаграмму в реальном времени.Прокрутка TrackBar для отображения моей диаграммы в реальном времени

enter image description here

Мой метод путем добавления DataPoint как TrackBar завитков.

private void trackBar1_Scroll(object sender, EventArgs e) 
{ 
    if (trackBar1.Value < valueBefore) //scrolling to the left removes previous DataPoint 
    { 
     try 
     { 
      chart1.Series["Correlation"].Points.RemoveAt(valueBefore); 
     } 
     catch 
     { 
      MessageBox.Show(valueBefore.ToString()); //Try catch for debugging purposes 
     } 
    } 

    else //scrolling to the right adds DataPoint based on trackBar's current value 
    { 
     chart1.Series["Correlation"].Points.AddXY(Convert.ToDouble(age[trackBar1.Value]), salary[trackBar1.Value]); 
    } 

    valueBefore = trackBar1.Value; //in order to know which 

    label1.Text = "No. of records : " + (trackBar1.Value + 1); 

} 

код работает, если я использую мои клавиши со стрелками или щелчками мыши (SmallChange и LargeChange, определенные в 1).

Прокрутка вправо не вызывает никаких проблем, однако прокрутка влево приведет к ошибке исключения, которую я не могу определить. Кажется, что valueBefore моего индекса DataPoint находится вне диапазона, так:

System.ArgumentOutOfRangeException was unhandled 
    HResult=-2146233086 
    Message=Index was out of range. Must be non-negative and less than the size of the collection. 
Parameter name: index 
    ParamName=index 
    Source=mscorlib 

Как решить эту проблему?

ответ

0

Метод DataPointCollection.RemoveAt(int) наследуется от коллекции и удаляет точку, основанную на индексе, который ссылается на текущее состояние DataPointCollection, а не на ваши данные.

Попробуйте разместить точку останова на линии, которая выдает исключение и проверяет коллекцию chart1.Series["Correlation"].Points. Это должно позволить вам увидеть, что происходит.

Смежные вопросы