2015-08-17 3 views
2

Я очень новичок в VB.NET. Я пытаюсь нарисовать непрерывный линейный график, основанный на определенных временных интервалах, используя графический интерфейс пользовательского интерфейса. Я могу сделать график в первый раз и получить необработанное исключение во второй раз. Пожалуйста, обратитесь к моему коду ниже,Как нарисовать непрерывный линейный график в vb.net

Dim s As New Series 

    s.Name = "aline" 

    'Change to a line graph. 
    s.ChartType = SeriesChartType.Line 

    For index As Integer = 1 To 10 
     s.Points.AddXY("1990", 27) 
     s.Points.AddXY("1991", 15) 
     s.Points.AddXY("1992", index) 
    Next 
    Chart1.Series.Add(s) 
    Threading.Thread.Sleep(1000) 
    s.Points.AddXY("1993", 27) 
    s.Points.AddXY("1994", 15) 
    s.Points.AddXY("1995", 10) 
    Chart1.Series.Add(s)'Here im getting exception 

Но на второй раз, если я пытаюсь обновить значения с помощью Chart1.Series.Add(s), я получаю «элемент диаграммы с именем„Алиной“уже существует в" SeriesCollection» ошибка. Просьба указать, как постоянно обновлять значения.

ответ

1

Вам не нужно ничего делать, чтобы обновить график - просто удалите второй Chart1.Series.Add(s).

В некоторых случаях может потребоваться принудительное обновление, и в этом случае вы должны использовать Chart.DataBind method.

В разделе Замечания документации методы DataBind:

В тех случаях, когда источник данных устанавливаются на график, и никаких других операций с данных не требуется, метод DataBind не должен быть явно называется. В этих случаях сама диаграмма свяжет данные с источником данных перед их визуализацией.

Действия, связанные с этим, легче увидеть, если вы добавите кнопку в форму, чтобы добавить некоторые значения: при нажатии кнопки вы увидите, что график корректирует ось X и добавляет новые точки.

Imports System.Windows.Forms.DataVisualization.Charting 

Public Class Form1 
    Dim s As New Series 

    Sub DoChart() 

     s.Name = "aline" 

     'Change to a line graph. 
     s.ChartType = SeriesChartType.Line 

     For index As Integer = 1 To 10 
      s.Points.AddXY("1990", 27) 
      s.Points.AddXY("1991", 15) 
      s.Points.AddXY("1992", index) 
     Next 
     Chart1.Series.Add(s) 

    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     s.Points.AddXY("1993", 27) 
     s.Points.AddXY("1994", 15) 
     s.Points.AddXY("1995", 10) 
     'Chart1.DataBind() 

    End Sub 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     DoChart() 

    End Sub 

End Class 
+0

Отличные работы отлично, спасибо большое – shivcena