Я думаю, что мой предмет суммирует то, что мне интересно знать.Я пытаюсь создать диаграмму, в которой Series1 - из Таблицы 1, Series2 - из Таблицы 2 в данном наборе данных.
Мой код, приведенный ниже, не выдает никаких ошибок, но, похоже, он собирает данные для каждой серии изпервая таблица.
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Public Sub New(ByVal ChartData As DataSet)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Dim ChartArea1 As ChartArea = New ChartArea()
Dim Legend1 As Legend = New Legend()
Dim DataSeries(ChartData.Tables.Count - 1) As Series
Dim Chart1 = New Chart()
Me.Controls.Add(Chart1)
Chart1.ChartAreas.Add(ChartArea1)
Chart1.Legends.Add(Legend1)
Chart1.DataSource = ChartData
For index As UShort = 0 To ChartData.Tables.Count - 1
DataSeries(index) = New Series()
DataSeries(index).Name = ChartData.Tables(index).TableName
Chart1.Series.Add(DataSeries(index))
Chart1.Series(index).XValueMember = ChartData.Tables(index).Columns(0).ColumnName
Chart1.Series(index).YValueMembers = ChartData.Tables(index).Columns(1).ColumnName
Next
Chart1.Dock = DockStyle.Fill
Chart1.TabIndex = 0
End Sub
End Class
Редактировать: По-видимому, я могу получить ожидаемые результаты, перебирая и устанавливая точки из данных ... но такой подход не будет быстрым для больших наборов данных,Есть ли лучший способ сделать это?
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Public Sub New(ByVal ChartData As DataSet)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Dim ChartArea1 As ChartArea = New ChartArea()
Dim Legend1 As Legend = New Legend()
Dim DataSeries(ChartData.Tables.Count - 1) As Series
Dim Chart1 = New Chart()
Me.Controls.Add(Chart1)
Chart1.ChartAreas.Add(ChartArea1)
Chart1.Legends.Add(Legend1)
For index As UShort = 0 To ChartData.Tables.Count - 1
DataSeries(index) = New Series()
DataSeries(index).Name = ChartData.Tables(index).TableName
Chart1.Series.Add(DataSeries(index).Name)
For RowIndex As UShort = 0 To ChartData.Tables(index).Rows.Count - 1
Chart1.Series(DataSeries(index).Name).Points.AddXY(ChartData.Tables(index).Rows(RowIndex).Item(0), ChartData.Tables(index).Rows(RowIndex).Item(1))
Next
Next
Chart1.Dock = DockStyle.Fill
Chart1.TabIndex = 0
End Sub
End Class